Normalerweise würde ich NSTemporaryDirectory
verwenden, aber ein Tool, das ich verwende, hat einige strikte Pfadlänge Grenzen, und der Verzeichnispfad von NSTemporaryDirectory
zurückgegeben ist zu lang. Ist es in Ordnung, Dinge direkt in /tmp
zu setzen, mit NSUUID
, um einen Dateinamen zu generieren?Ist es in Ordnung,/tmp auf macOS zu verwenden?
Antwort
Hier ist, was die Dokumentation darüber zu sagen haben:
„Wenn möglich, vermeiden in einem gemeinsamen Verzeichnis Erstellen von temporären Dateien wie/tmp oder in Verzeichnissen im Besitz des Benutzers Wenn jemand anders Zugriff auf Ihre temporäre Datei hat, kann er seinen Inhalt ändern, seine Eigentümerschaft oder seinen Modus ändern oder ihn durch einen harten oder symbolischen Link ersetzen.Es ist viel sicherer, eine temporäre Datei überhaupt nicht zu verwenden (verwenden Sie ein anderes Formular) der Interprozesskommunikation) oder halten temporäre Dateien in einem von Ihnen erstellten Verzeichnis, auf das nur Ihr Prozess (der als Ihr Benutzer fungiert) Zugriff hat.
Wenn Ihre Datei in einem freigegebenen Verzeichnis sein muss, geben Sie ihr einen eindeutigen (und zufällig generierten) Dateinamen (Sie können dazu die C-Funktion mkstemp verwenden), und schließen und öffnen Sie die Datei nie. Wenn Sie eine solche Datei schließen, kann ein Angreifer sie möglicherweise finden und ersetzen, bevor Sie sie erneut öffnen.
Hier sind einige öffentliche Verzeichnisse, die Sie verwenden können:
...
/tmp
Dieses Verzeichnis für allgemeine gemeinsamen temporären Speicher verwendet wird. Es wird bei jedem Systemstart gelöscht.
...
Für maximale Sicherheit sollten Sie immer nur vorübergehend Verzeichnisse innerhalb dieser Verzeichnisse, stellen entsprechende Berechtigungen für diese Unterverzeichnisse erstellen und dann Dateien in diese Unterordner schreiben.“
So ist es entmutigt, aber wenn Sie keine andere Wahl haben, sieht es aus wie Sie in Ordnung sein, mit einigen Sicherheits Einsprüche
es gibt eine Ausnahme, obwohl, wenn Sie Ihre App Sandbox ist, /tmp
nicht zugänglich sein. https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html
- 1. Ist es in Ordnung, mit() zu verwenden?
- 2. Ist es in Ordnung, SpringRunner in Komponententests zu verwenden?
- 3. Ist es in Ordnung, UCC API 2017 zu verwenden?
- 4. Ist es in Ordnung, den CSS3-Selektor zu verwenden: not()
- 5. Ist es in Ordnung, Cassandra Collections zu verwenden?
- 6. Ist es in Ordnung LinearLayout anstelle von FrameLayout zu verwenden?
- 7. Ist es in Ordnung, Ruby 1.8.5 zu verwenden?
- 8. Ist es in Ordnung
- 9. Ist es in Ordnung, `using` so zu verwenden?
- 10. Ist es in Ordnung, AWT mit JavaFx zu verwenden?
- 11. Ist es in Ordnung, noch Tabellen zu verwenden?
- 12. Ist es in Ordnung, google.setOnLoadCallback mehrmals zu verwenden?
- 13. Ist es in Ordnung, so viel NEUE Anweisung zu verwenden?
- 14. Warum if (asynchronous.get()) Arbeit und ist es in Ordnung, es auf diese Weise zu verwenden
- 15. Ist es in Ordnung, eine öffentliche Variable in C# zu verwenden, wenn es schreibgeschützt ist?
- 16. iphone - ist es in Ordnung, usleep auf einem sekundären Thread auf Grand Central Dispatch zu verwenden?
- 17. Ist es in Ordnung, downcast?
- 18. Ist es in Ordnung, Mungos M-Promise zu verwenden, auch wenn es veraltet ist?
- 19. Ist es möglich, dotnet core auf macOS zu installieren, ohne Root-Zugriff zu verwenden?
- 20. Ist es in Ordnung, UITableViewCells in einem Array zu speichern?
- 21. Ist es in Ordnung, $ scope.functionName zu verwenden oder sollte ich var functionName = function() verwenden?
- 22. (Eclipse) ist es in Ordnung, andere Klassen in demselben Ordner zu verwenden, ohne zu importieren?
- 23. Ist es in Ordnung, Logik in einem Supervisor zu haben?
- 24. Ist es in Ordnung, mit gRPC Daten zu übertragen?
- 25. Ist es in Ordnung, das .git vom Tensorflow zu entfernen?
- 26. Ist es in Ordnung, Python 2.7 und 3.5 zu installieren?
- 27. Ist es in Ordnung, private Felder zu überspringen und nur Eigenschaften in C# zu verwenden?
- 28. Ist es sicher, Druids Ordner zu löschen? Var/tmp
- 29. Ist es in Ordnung, Modernizr mit Twitter Bootstrap zu implementieren?
- 30. Ist es in Ordnung, Optional.ofNullable zu verwenden, um zu überprüfen, ob null und Standardwert zuweist
Danke, ich denke in meinem Fall (ein Komponententest) sind die Sicherheitsbedenken nicht groß genug, um von Bedeutung zu sein (und, uh, es funktioniert nicht mit dem langen Pfad, also ...). – taway