php - 如何安全地防止上传的文件在任何服务器上通过 PHP 运行?

标签 php windows apache

我注意到可以通过 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/

相关文章:

c++ - 使用c++调用和使用Windows语音识别

php - 在 linux 操作系统中编写的 php 文件在服务器上出现错误 500

ruby-on-rails - 如何在没有Web服务器的情况下在WWW上发布我的应用程序?

php - MySQL 表 - 如何在十亿行表上快速插入?

php - 用颜色覆盖 png 图像 (php)

php - 在没有 ID 的子主题中注销侧边栏

apache - 重写规则案例 "Internal server error"(里面的 error.log)

php - 向 Windows 服务控制管理器 (SCM) 提供 IIS/PHP 权限

java - 在 Java 中打开 PDF 文件并使用双倍行距

windows - Inno Setup - 卸载程序时从 PATH 环境变量中删除路径