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