我想让用户能够上传PHP文件并下载它们而不执行它们, 我需要为特定目录关闭PHP,以使其表现为纯文本。
我试过这个,但这是一个合适的解决方案吗?
RemoveHandler .php .phtml .php3
RemoveType .php .phtml .php3
php_flag engine off
答案 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);
?>
注意:在允许网址传递之前,您需要清理输入。因此,人们可能会注射../
等,应该注意这些。
希望这会有所帮助,而且非常好。