通常我會使用NSTemporaryDirectory
,但是,我正在使用的工具有一些嚴格的路徑長度限制,並且由NSTemporaryDirectory
返回的目錄路徑太長。是否可以直接在/tmp
中使用NSUUID
生成文件名?可以在macOS上使用/ tmp嗎?
1
A
回答
2
下面介紹一下文檔不得不說一下吧:
「如果可能的話,避免創建共享目錄的臨時文件,如/ tmp,或由用戶擁有的目錄。如果其他人有權訪問您的臨時文件,他們可以修改其內容,更改其所有權或模式,或者用硬鏈接或符號鏈接替換它。根本不使用臨時文件更安全(使用其他表單進程間通信)或將臨時文件保存在您創建的目錄中,並且只有您的進程(充當您的用戶)纔有權訪問。
如果您的文件必須位於共享目錄中,請爲其指定一個唯一(隨機生成的)文件名(您可以使用C函數mkstemp來執行此操作),並且永不關閉並重新打開文件。如果關閉這樣的文件,攻擊者可能會發現它並在重新打開之前將其替換。
這裏有一些公共目錄,您可以使用:
...
/tmp目錄
這個目錄是用於一般共享的臨時存儲。每次系統啓動時它都被清除。
...
爲了獲得最大的安全性,你應該總是在這些子目錄中創建這些目錄內的臨時子目錄,設置相應的權限,然後將文件寫入這些子目錄。」
所以,它氣餒,但如果你沒有其他選擇,那樣子你會好起來的,具有一定的安全注意事項
有一個例外,不過,如果你的應用沙盒,/tmp
將無法訪問:https://developer.apple.com/library/content/documentation/Security/Conceptual/AppSandboxDesignGuide/AppSandboxInDepth/AppSandboxInDepth.html
相關問題
- 1. 可以使用FileManager.default.urls(for:in :)在iOS中獲取tmp /目錄嗎?
- 2. ChildWindow在MacOS上工作嗎?
- 3. 我可以使用win32com客戶端進行macOS嗎?
- 4. 我可以使用macOS Sierra將其部署到iOS設備嗎?
- 5. 我可以在vs2008上使用HTML5嗎
- 6. Logstash可以在rails上使用Ruby嗎?
- 7. 我可以在Azure上使用LoadLibrary嗎?
- 8. 可以在Windows上使用UG嗎?
- 9. 我可以在GAE上使用Spring嗎?
- 10. IOS可以在appDelegate上使用AVAudioPlayer嗎?
- 11. 可以在CentOS 7上使用JFS嗎?
- 12. 我可以在Android上使用PixelMed嗎?
- 13. 我可以在QNX上使用Java嗎?
- 14. 我可以在iOS上使用QLThumbnailImageCreate嗎?
- 15. 我可以在GAE上使用django.contrib.gis嗎?
- 16. 我可以在android上使用jmonkeyengine嗎?
- 17. 我可以在iPhone上使用setModalPresentationStyle嗎?
- 18. 可以在ViewGroup上使用android.graphics.Camera嗎?
- 19. 你可以在android上使用GSUtil嗎?
- 20. 我可以在Monogame上使用OpenCL嗎?
- 21. 你可以在ListBox.SelectedItems上使用ValidationRules嗎?
- 22. 我可以在TFS上使用Grunt嗎?
- 23. 我可以在Facebook上使用mailto嗎?
- 24. 在Heroku上可以使用SQLAlchemy嗎?
- 25. 我可以在Ubuntu上使用brew嗎?
- 26. 我可以在KeyUp上使用KeyBinding嗎?
- 27. 我可以在ES6上使用JSNice嗎?
- 28. 可以在unix上使用WPF嗎?
- 29. 可以在Android上使用GoogleFinanceAPI嗎?
- 30. 我可以在Mac上使用Kinect嗎?
謝謝,我認爲在我的情況下(單元測試)安全問題並不是一個足夠重要的事情(並且,呃,它不適用於漫長的道路,所以......)。 – taway