【问题标题】:Allow upload of PHP file允许上传 PHP 文件
【发布时间】:2013-07-26 17:10:29
【问题描述】:

我的网站上有一个表单,用户可以在其中上传 TXT 格式的文件。这些文件始终是 PHP 文件,我要求用户更改扩展名,以免对服务器(运行 APACHE + PHP)造成损害。

该文件必须上传到 www 目录,因为稍后他们可以在必要时下载该文件。我无法将文件保存在根目录(public_html 之上),因为用户必须有权随时下载文件。问题是,当用户打开包含 PHP 文件的 URL 时,它会被执行,这会在安全性上造成很大的漏洞。

到目前为止,我要求用户将文件上传为 txt,但我想让它更专业,并允许他们将其上传为 *.php。如何防止有人上传带有安全性的文件的攻击损坏我的服务器?

谢谢。

【问题讨论】:

  • 如果你盲目地提供随机 PHP 文件,那你就是在自找麻烦。
  • 我需要提供随机 PHP 文件,但我希望能够创建一些目录或不解释 PHP 的地方!

标签: php security


【解决方案1】:

我建议您将它们作为 .phps 文件上传,当您通常查看它们时,它们将是语法突出显示的 PHP 文件,并且不会是可执行的。

如果 PHPS 文件不能自然地在您的网络服务器上运行,您可以试试这个:https://kb.mediatemple.net/questions/1655/How+do+I+enable+.phps+file+to+be+color+highlighted%3F

禁用 PHP

或者,您可以将它们上传到另一个目录,并通过在该目录的 .htaccess 文件中设置以下内容来使用 .htaccess 禁用 PHP。

php_flag engine off

【讨论】:

  • 这是个好主意,但这里的重点不是要求用户更改扩展名。我希望能够允许用户上传 PHP 文件并在以后下载它们。还是谢谢你:)
  • 您可以上传到 www 下面的另一个目录,并在该目录中禁用 php,检查我的编辑还可以让您的脚本将它们制作成 phps 文件,您不需要让用户更改它们.
  • 可以只上传一个htaccess到那个目录,而且只在那个目录生效吗?
  • 最佳答案!谢谢!你拯救了我的一天:)
【解决方案2】:

让他们上传为 PHP,然后在将临时上传的文件移动到它的永久主页时,将名称命名为 myfile.php.source。在下载页面上,不要只是链接到文件,以这样的方式流式传输它们,您可以强制下载而不是在浏览器中加载页面,并且您可以控制它在标题中的传递方式,例如:

header("内容配置:附件;文件名=\"$file\"");

希望有帮助

【讨论】:

  • 另外......当你存储文件时设置权限,这样apache服务器就不能执行它们。
  • 太复杂了。另一个答案对我来说更容易。还是谢谢你!
【解决方案3】:

创建一个文件夹并设置php将所有脚本文件上传到那里。

将文件夹权限设置为 744。

这会阻止该文件夹中的任何文件被执行。

【讨论】:

  • 如何更改文件的权限?我在共享主机中...我可以仅使用 PHP 更改权限吗?我知道使用 FTP 我可以做到这一点,但不知道 PHP 可以做到这一点!谢谢!
  • 我在发布之前进行了测试。我在过去 CGI 常用的技术中使用了该技术,显然它今天仍然适用于 php 脚本。
  • 文件权限可以使用 php 和 chmod 命令更改:php.net/manual/en/function.chmod.php
猜你喜欢
  • 1970-01-01
  • 2022-09-26
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 2011-10-20
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
相关资源
最近更新 更多