我搜索过各种"PHP上传安全性“帖子,特别是关于阻止PHP文件上传的帖子,但是似乎没有明确的方法来防止伪装的PHP文件从具有文件重命名功能的"filemanager"-like应用程序中上载。如果我错了,请纠正我。
当然,上传时可以检查扩展名和mime类型。但是,用户可以轻松地上传"index.html“(包含一些PHP),然后将其重命名为"index.php”,因此这似乎不能提供很大的安全性。当然,可以防止将文件重命名为"*.php",但这似乎充其量是脆弱的。
当然,最终的解决方案是在存储文件的目录中禁用PHP执行。但是,filemanager应用程序将被分发,我只能向服务器所有者推荐,而不是强制执行。
任何反馈都很感激。仅供参考,我指的是一个分布式PHP filemanager应用程序,因此我无法控制服务器环境(除了提供建议)。filemanager允许重命名文件,用户通常希望上传大多数文件类型(不包括php)。
发布于 2021-10-04 09:58:01
上传的文件应该只上传文件-资产或静态文件-。您不应该使用PHP运行它,即使您需要允许您的用户上传一个文件(假设他自己的css用于他的自定义配置文件),这个文件应该只作为一个静态文件加载。
例如,在nginx中:
server {
// ....
location ~ \.php$ {
try_files $uri =404;
// ...
}
location ~* \.(js|css|jpg|jpeg|gif|png|tgz|gz|rar|bz2|doc|pdf|ppt|tar|wav|bmp|rtf|swf|ico|flv|txt|woff|woff2|svg)$ {
// rest of configurations;
}
// ....
}https://stackoverflow.com/questions/69433929
复制相似问题