加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP安全根

发布时间:2020-12-13 22:35:11 所属栏目:PHP教程 来源:网络整理
导读:我的朋友在我的脚本中发现了一个问题,它提供了对根文件的访问. 这个url给出了passwd文件: http://site.com/attachment.php?file=../../../../../../etc/passwd 如何逃脱这个安全漏洞? 有几种不同的解决方案. 如果只能有文件名,则basename()解决方案可行.
我的朋友在我的脚本中发现了一个问题,它提供了对根文件的访问.

这个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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读