在Laravel应用程序中,我使用Laravel File Manager来使用户能够将个人资料图像上传到他们的个人资料。
这些图像已上传到/project/public/assets/uploads/images/{user}/
在我进行的测试中,我向给定的路由发出了POST
请求,我能够在这些目录中上载并执行PHP脚本
我的第一个想法是更改上载文件夹的内容以使用更严格的权限,因此我更改了图像文件夹中的每个文件以使用以下Unix文件权限:0644
。原则上,这应该拒绝公共可执行操作。
我再次尝试了测试,我仍然可以执行脚本。
无法阻止潜在危险的上传,是否有办法在给定目录中禁用PHP?
正如其他人所建议的那样,最好保护文件夹。
为了达到安全级别,我在公共上传文件夹的根目录中创建了一个htaccess文件。
它看起来像这样:
# Disable PHP in public uploads folder
<IfModule mod_mime.c>
RemoveHandler .php .phtml .php3 .php4 .php5
RemoveType .php .phtml .php3 .php4 .php5
</IfModule>
<IfModule mod_php7.c>
php_flag engine off
</IfModule>