如何在不可能执行的情况下处理.php文件的上载?
我希望允许我的用户将如何在不可能执行的情况下处理.php文件的上载?,php,file-upload,Php,File Upload,我希望允许我的用户将.php文件上载到服务器,但也希望确保这些文件对我的应用程序无害 有什么建议吗 谢谢。不要执行它们,这就足够了 确保您的应用程序在任何时候都不会运行或包含用户上载的文件(例如,通过使用GET参数来include包含没有任何文件) 另外,请确保上载的文件不能通过.php扩展名从外部访问 在一个正常的、半正确编码的工作流中,上载的.php文件不构成安全风险,无论它们包含什么代码。选项1:使用不同的文件名存储它们,并将原始文件名作为元数据的一部分存储,例如存储在数据库表中 选项2:
.php
文件上载到服务器,但也希望确保这些文件对我的应用程序无害
有什么建议吗
谢谢。不要执行它们,这就足够了 确保您的应用程序在任何时候都不会运行或包含用户上载的文件(例如,通过使用GET参数来
include
包含没有任何文件)
另外,请确保上载的文件不能通过.php
扩展名从外部访问
在一个正常的、半正确编码的工作流中,上载的.php文件不构成安全风险,无论它们包含什么代码。选项1:使用不同的文件名存储它们,并将原始文件名作为元数据的一部分存储,例如存储在数据库表中 选项2:禁用上载目录上的脚本执行
选项3:将它们重命名为.phps(可接受的原始PHP显示扩展)我建议使用“在上传目录中禁用脚本执行”的方法。这是唯一完全安全的解决方案 只需将此规则添加到uploads目录中的
.htaccess
文件:
php_value engine off
有两种解决方案:
- 将它们重命名为.phps
- 在Web服务器配置中禁用上载目录中的PHP执行
然后,您可以调整新脚本,并按照您认为合适的方式执行。是的。我从我的答案中删除了这一段,其实没有必要强调这一点。+1这是一个很好的解决方案,但它只会保护通过web服务器发出的请求,而不会保护通过包含的内部执行(但这是一个非常小的风险)。这是不言而喻的!运行一个应用程序来执行用户上传的代码,而没有任何卫生设施,这当然是一个坏主意。当然,你是对的。你也可以将mime类型更改为
text/plain
或类似的类型。