9

假设我有一个图像上传器脚本,我想通过仅将其显示为纯文本来防止上传目录执行 Php 甚至 html,我在许多网站上都看到了这个技巧,但我不知道他们是如何做到的。

简而言之,如果我上传evil.php到那个目录,并且我尝试访问它,我只会看到一个纯文本源,没有执行 html 或 php。(但我仍然希望图像能够正常显示)

我知道我可以这样做,header("content-type:text/plain");但这不会有帮助,因为我想要的是content-type:text/plain由服务器自动设置从上传目录输出的所有内容,除了图像。

注意:我正在运行 php 5.3.2/Cent OS 和最新的 cPanel。

谢谢

4

4 回答 4

4

至少,您需要将以下内容放在上传目录的 .htaccess 文件中:

Options -Indexes
Options -ExecCGI
AddHandler cgi-script .php .php3 .php4 .phtml .pl .py .jsp .asp .htm .shtml .sh .cgi

.htaccess 文件的问题是,如果您的上传没有阻止上传,您的 .htaccess 可能会被覆盖。另一种解决方案是使用此处显示的 Apache 指令(如果您使用的是 Apache),使用 .htaccess 在目录(包括所有子目录)中禁用 PHP

于 2010-04-11T22:22:49.570 回答
3

.htaccess在上传目录中放一个。

AddType 'text/plain' .php .html

或者

ForceType 'text/plain'
#...
于 2010-04-11T22:23:48.347 回答
3

在 Google 上搜索“禁用目录的脚本执行”以找到许多选项。这个是我的最爱:

AddType text/plain .html .htm .shtml .php .php3 .phtml .phtm .pl .py .cgi .js

唯一的缺点是您必须明确命名不运行的扩展名,但可能(只是预感)使用某种通配符,以便所有文件扩展名都被视为纯文本,然后手动添加 Mime Type为您的标准图像扩展。

于 2010-04-11T22:25:50.127 回答
0

由于您在谈论图像上传器,因此您不想将图像显示为plain/text. 您将如何将图像与恶意文件分开?在该任务期间,只需阻止保存特定文件。

于 2010-04-11T22:25:36.627 回答