3

我想让用户能够上传 PHP 文件并在不执行它们的情况下下载它们,我需要为特定目录关闭 PHP,使其表现为纯文本

我试过这个,但它是一个合适的解决方案吗?

RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off
4

1 回答 1

2

您可以使用代理脚本来处理此问题。

在您的.htaccess文件中,您可以将文件夹中的所有请求重定向到这种方式:

http://example.com/uploads/myfilewithadminaccess.php

http://example.com/uploads/index.php?file=myfilewithadminaccess.php

来源.htaccess

RewriteEngine On
RewriteRule ^([^/]*)$ ./index.php?file=$1 [L]

并且index.php只是解析文件并给出输出。

来源index.php

<?php
    header("Content-type: text/html");
    $filename = (file_exists("uploads/" . $_GET["file"])) ? "uploads/" . $_GET["file"] : "error.txt";
    $filecont = file_get_contents($filename);
    echo htmlspecialchars($filecont);
?>

小提琴:http ://codepad.viper-7.com/68FSIU

注意:您需要在允许 URL 传递之前清理输入。因此,人们可能会注射../等,这些都应该小心。

希望这会有所帮助,而且非常好。

于 2012-10-11T10:09:59.453 回答