我注意到可以通过 PHP 运行一个文件,即使它的扩展名不是 .php
,例如文件 test.xyz.php.whatever.zyx
即使扩展名不是 .php
,仍然可以使用 PHP 运行!它恰好在文件名中包含 .php.
,这足以让我的 Apache 运行 PHP 脚本。
我试过(正如有人建议的那样)将其放入该文件夹的 .htaccess
文件中:
php_flag engine off
但它在我的机器上不起作用。
目前我知道的唯一解决方案是:
- 重命名为不是通过 PHP 运行的已知文件扩展名,例如
.txt
。 - 从文件名中删除所有点,从而使其无扩展名。
但我仍然不确定这些解决方案如何在我的 Windows 服务器(使用 Apache)以外的其他服务器上运行。
是否有任何其他解决方案不需要以任何方式重命名文件名?
最佳答案
对于用户上传我建议你在根路径上面的一层上传一个文件夹 在这种情况下,只有您有权访问上传文件夹(直接寻址) 并且攻击者无权访问此文件夹中的任何文件 因此,您禁用了攻击者运行恶意文件的操作
关于php - 如何安全地防止上传的文件在任何服务器上通过 PHP 运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13272231/