我目前正在使用PHP上传文件,但我有点卡住了。允许用户上传PHP和JS等文件,但我不希望脚本在用户尝试下载时运行。是否有可能以某种方式阻止使用htaccess或其他东西?
答案 0 :(得分:1)
您可以编写一个包装器php文件,将文件内容发送到浏览器。但首先,您必须确保上传的文件存储在存储在网络根目录之外,以便没有人可以通过浏览器无意中或以其他方式访问它们。
包装器php脚本可以沿着这些方向发展:
<?php
$f = $_GET[ "f" ];
if ( filename_is_ok( $f ) && is_file( "../some_folder_outside_www/$f" ) )
{
header( "Content-Type: text/plain" );
header( "Content-Disposition: attachment; filename=$f" );
header( "Content-Length: " . filesize( "../some_folder_outside_www/$f" ) );
readfile( "../some_folder_outside_www/$f" );
}
else
{
header("HTTP/1.0 404 Not Found");
echo "File not found (or you're not supposed to view this file)";
}
function filename_is_ok( $f )
{
// You'll have to implement it yourself
return false;
}
// example calls:
// http://website.com/download.php?f=test.php
// http://website.com/download.php?f=test.js
?>
答案 1 :(得分:-1)
您可以更改上传的文件扩展名,例如
my-file.php.txt
my-file.js.txt
假设你的服务器上没有php处理.txt文件...