PHP安全根

前端之家收集整理的这篇文章主要介绍了PHP安全根前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我的朋友在我的脚本中发现了一个问题,它提供了对根文件的访问.

这个url给出了passwd文件

http://site.com/attachment.PHP?file=../../../../../../etc/passwd

如何逃脱这个安全漏洞?

有几种不同的解决方案.
如果只能有文件名,则basename()解决方案可行.

但是,如果它可以是路径,则需要更复杂的解决方

//assume current directory,but can be set anything. Absolute path of course
$basedir   = dirname(__FILE__);
//assume our files are below document root. 
//Otherwise use it's root dir instead of DOCUMENT_ROOT
$filename  = realpath($_SERVER['DOCUMENT_ROOT'].$_GET['file']);
if (substr($filename,strlen($basedir)) !== $basedir) {
  header ("HTTP/1.0 403 Forbidden"); 
  exit; 
}

还有一个有用的PHP配置选项open_basedir

猜你在找的PHP相关文章