【问题标题】:Correct file upload folder permission正确的文件上传文件夹权限
【发布时间】:2013-02-14 12:10:35
【问题描述】:
CI user guide 中有这样一行:
您需要为上传的图片设置一个目标文件夹。创建一个
CodeIgniter 安装根目录下名为 uploads 和
将其文件权限设置为 777。
当我开发真正的 Web 应用程序时,它的安全性如何?例如:社交网络,我想上传用户的个人资料图片。当用户想要上传私人图片时,我想我会遇到隐私问题。
【问题讨论】:
标签:
php
codeigniter
file-upload
permissions
【解决方案1】:
根据您想要的安全级别,777 可能不是最佳选择(它是最简单的)。网络服务器运行的用户对文件夹有 rwx,如果你想真正安全,该文件夹不应该在你的 webroot 下。
这意味着,如果 web 文件位于 /home/mysite/ 中(例如 /home/mysite/index.html 映射到 http://mydomain.com/index.html ),那么上传文件夹应该是 /home/uploads 。
您的应用程序可以使用代码通过系统路径 ( /home/uploads ) 访问文件,但互联网上的任何人都不能通过这种方式直接访问它。
或者,如果您不能执行上述操作(例如,因为您在共享主机上),您可以使用 .htaccess(放置在上传文件夹中)获得相同的效果,方法是放置以下规则:
Deny from all
Options None
Options +FollowSymLinks
(再次注意,您的应用需要使用系统路径,因为 Apache 无法直接提供这些文件)。
【解决方案2】:
您还可以使用 .htaccess 来拒绝对您允许的文件夹以外的文件夹的访问。至少我对我的也是如此,并且 .htaccess 中未列出供访问的目录对用户不可用。
另一种安全的方法是使用 /public_html/ 之外的文件夹
此文件夹之外的目录几乎无法从外部访问。