php代码审计

触发漏洞点:$_SERVER['PHP_SELF']

$_SERVER['PHP_SELF']一般用来引用当前网页地址,是系统自动产生的全局变量。

php代码审计_第1张图片

若输入网址为:http://localhost/l.php/a,此时页面正常进行且并不报错

若在a的位置构造恶意js,则会执行js代码

漏洞原因:web服务器允许/xx/aa/123等形式的请求发生

漏洞利用效果:


php代码审计_第2张图片

解决方案:

1、用htmlentities($_SERVER['PHP_SELF']),将恶意代码转化为html实体,使代码无法实现


php代码审计_第3张图片

2、用$SERVER['REQUEST_URL']代替$_SERVER['PHP_SELF']

原因:$SERVER['REQUEST_URL']会原封不动的反应网址本身,而$_SERVER['PHP_SELF']会对网址进行一次urldecode。

注意:很多情况下,浏览器会对用户输入要提交给web服务器的内容进行encode,然后服务器端程序会自动进行decode

你可能感兴趣的:(php代码审计)