![]() |
|
首页 │ Apache │ Linux│ Java│ MySQL│ 注册│帮助 | |||
因为又很多人认为我是无稽之谈,所以来个实例
源程序是那个可以隐含下载地址的程序
[PHP]
<?
$file_name = "info_check.exe";
$file_dir = "/public/www/download/";
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
echo "文件找不到";
exit;
} else {
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;}
?>
[/PHP]
在这里如果人家使用GET方法指定
$file_name和$file_dir
那么你的源文件很可能泄漏
当然,你如果要坚持说他凭什么知道我的变量是这两个~~
那我无话可说~~
(原因就是为什么PHP建议我们关闭register_globals选项的原因)
如果大家还是不相信的话,可以访问这个地方,看看源文件是否被读出来了
http://xybs.vicp.net:8005/temp.php
temp.php的源代码
[PHP]
<?
$file_name = "tupian.php";
$file_dir = "";
if (!file_exists($file_dir . $file_name)) { //检查文件是否存在
echo "文件找不到";
exit;
} else {
$file = fopen($file_dir . $file_name,"r"); // 打开文件
// 输入文件标签
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: ".filesize($file_dir . $file_name));
Header("Content-Disposition: attachment; filename=" . $file_name);
// 输出文件内容
echo fread($file,filesize($file_dir . $file_name));
fclose($file);
exit;}
?>
[/PHP]

