php上传文件时的安全措施

Ita*_*agi 1 php security file-upload

我有一个文件上传脚本可供公众使用(例如,不是封闭的工作环境)并且我担心安全性:我想允许上传任何文件,每个文件都将上传到它自己的唯一目录,显然,我无法控制人们是否上传恶意文件,但是处理这些文件的最佳方法是什么?

我想到了:

完全删除扩展名,并且仅在提供要下载的文件时,将其原始扩展名返回给它们(因为所有文件名和位置都将保存在 db 中)

创建“安全区”以禁止在目录中运行多个扩展。

禁止上传“不安全”的扩展。

当然,问题是:有太多“不安全”的文件扩展名,无法全部计算在内。尽管文件包含一些代码,但可以将文件屏蔽为“安全”。以及许多其他安全风险...

所以……有什么建议吗?

Mar*_*c B 5

为了适当的安全:

  1. 限制文件大小
  2. 永远不要使用任何用户提供的数据作为文件名的一部分来存储文件。通过数据库跟踪上传并使用其关联记录的主键存储文件
  3. 不要将文件放在可通过网络访问的目录中 - 仅允许通过脚本访问。然后,此脚本可以在下载标题中填写原始文件名。
  4. 无论您将文件存储在何处,都应以非执行权限存储它们。这意味着在 Unix-ish 系统上最多为 0640,而在 Windows 系统上则为等价物。
  5. 限制上传以防止用户用夏季大片的最新蓝光翻录填充您的系统。限制下载以防止您的网站成为下一个软件天堂。
  6. 尽可能多地跟踪关于您的用户的数据:至少是浏览器 ID 和他们的 IP 地址。更好的是,在让他们靠近站点的文件处理部分之前,需要某种形式的身份验证/登录。