如何在不执行它们的情况下允许将PHP文件上载到服务器

时间:2012-10-11 10:02:21

标签: php file-upload

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

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

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

1 个答案:

答案 0 :(得分: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

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

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