通常我会使用NSTemporaryDirectory
,但是,我使用的工具有一些严格的路径长度限制,NSTemporaryDirectory
返回的目录路径太长。将事物直接放在/tmp
中,使用NSUUID
生成文件名吗?
答案 0 :(得分:2)
以下是文档对此的评论:
“如果可能,请避免在共享目录(例如/ tmp)或用户拥有的目录中创建临时文件。如果其他人有权访问您的临时文件,他们可以修改其内容,更改其所有权或模式,或用硬链接或符号链接替换它。或者根本不使用临时文件(使用其他形式的进程间通信)或将临时文件保存在您创建的目录中并且仅保存到您的进程(作为您的用户)有权访问。
如果您的文件必须位于共享目录中,请为其提供唯一(并随机生成)的文件名(您可以使用C函数mkstemp执行此操作),并且永远不要关闭并重新打开该文件。如果您关闭此类文件,攻击者可能会在重新打开之前找到并替换它。
以下是您可以使用的一些公共目录:
...
的/ tmp
此目录用于常规共享临时存储。每次系统启动时都会清除它。
...
为了最大限度地提高安全性,您应始终在这些目录中创建临时子目录,在这些子目录上设置适当的权限,然后将文件写入这些子目录。“
所以,它是气馁的,但如果你别无选择,看起来你会好起来的,有一些安全警告。
但是有一个例外;如果您的应用是沙盒,则无法访问/tmp