Download.php
create_engine
以下是我用来将URL传递给php脚本的JavaScript代码: Download.js
<?php
$file = $_GET['file'];
if(file_exists($file)) {
header('Content-Description: File Transfer');
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.basename($file));
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: ' . filesize($file));
ob_clean();
flush();
readfile($file);
exit;
}
?>
如果我在url中输入“ Download.php?file = .. / web.config”,则正在下载web.config文件。我想防止直接下载源代码。下载选项用于下载我存储在主目录中pdf文件夹中的pdf文件。
请帮忙!
答案 0 :(得分:1)
您在这里犯了一个非常糟糕的设计决定,使您vulnerable to file system traversal。
您可能会考虑:
..
的所有请求鉴于Download.php根本不希望确保请求者已通过身份验证,我建议您也许将您的PDF文档保存在可访问网络的目录中,并直接链接到它们,而不是创建可能造成危害的攻击媒介您的服务器。
答案 1 :(得分:0)
在web.config中使用它,
<authorization>
<allow users="user1, user2"/>
<deny users=”?”/>
</authorization>
就像迈克尔M所说的那样,不允许代码规避这一点。