echo " <td align=\"center\" nowrap valign=\"top\"><a href=\"?downfile=".
urlencode($filepath)."\">下载</a>这段代码是提供一个链接,如果用户点击的话,就提交$_GET['downfile']变量按$filepath下载文件。的确是要有一个$_GET['downfile'],否则没法接收。
$filepath必须是一个完整的指向文件的路径,而上面的代码并没有提供相关的检查函数,这是是有漏洞的。
而且是直接提交$_GET['downfile']变量,连$filepath都指明了,这样的网站安全系数是相当低的。劝楼主不要用这和代码。
urlencode($filepath)."\">下载</a>这段代码是提供一个链接,如果用户点击的话,就提交$_GET['downfile']变量按$filepath下载文件。的确是要有一个$_GET['downfile'],否则没法接收。
$filepath必须是一个完整的指向文件的路径,而上面的代码并没有提供相关的检查函数,这是是有漏洞的。
而且是直接提交$_GET['downfile']变量,连$filepath都指明了,这样的网站安全系数是相当低的。劝楼主不要用这和代码。
但是在PHP.NET上有这一句:
file_exists
(PHP 3, PHP 4, PHP 5)file_exists -- 检查文件或目录是否存在
说明
bool file_exists ( string filename )
如果由 filename 指定的文件或目录存在则返回 TRUE,否则返回 FALSE。file_exist同样也可以检测目录,如果用户把$filepath设置成一个目录的路径,同样可以绕过检查。
问题是
$downfile变量就是$_GET['downfile']吗?一般的,我们都要$downfile=$_GET['downfile']后,$dwonfile才会有值啊?!安全问题就不管了,我才刚学,能看懂就不错了^_^
$downfile不是$_GET['downfile']
实际上在代码中应该加一句:$downfile = $_GET['downfile'];
而且我用的是php4.32
你学了多久了??为什么这里不要进行$downfile = $_GET['downfile']也可以用$downfile??
你的代码应该有一个地方有这行代码的。
在别的文件里面应该有类似于
foreach($_GET as $key=$value){
$$key=$_GET['$key'];
}
这样的语句
这样也可以达到你在脚本中不使用$_GET直接可以用$downfile访问到由$_GET提交上来的数据
相当于auto_register