php 跳转本页面加参数_PHP编码安全:URL重定向安全

一次性付费进群,长期免费索取教程,没有付费教程。

进微信群回复公众号:微信群;QQ群:460500587

 教程列表  见微信公众号底部菜单 |   本文底部有推荐书籍 

1e2aaa0b3e03a0ea289701e19568ec82.png

微信公众号:计算机与网络安全

ID:Computer-network

Web应用程序经常将用户界面重定向和转至其他网页或网站,如果处理不当,用户会被攻击者利用重定向转至不可信的数据页面所欺骗,带来不必要的损失。

一般情况下,会将登录后需要跳转的地址“http://localhost:8080/Home”放到登录页面的参数中,如图1所示。

d2200cf02306b40599bf26235189465e.png

图1  登录跳转页面

登录成功后,如果没有得到适当验证,攻击者可以重定向目标用户到钓鱼软件或恶意网站,使用转发链接来使目标用户访问未经过授权的页面,这可能导致恶意软件的安装或者用户密码等敏感信息的泄露。

不安全的转发可能允许绕过访问控制,如下是URL跳转示例。示例中有一个名为“redirect.php”的页面,该页面有一个参数名是“url”。攻击者精心制作了一个URL将用户重定向到其他网站。

$url=$_GET['url'];

header("Location: $url");

即使登录界面相同,但如果URL不一样(见图1和图2),那么跳转界面也会不一样。当用户在浏览器中输入或者从邮件中点击攻击者发送过来的地址“http://localhost:8080/redirect.php?url=192.168.1.10:8888”后(“192.168.1.10:8888”仅为示例),会被引导到攻击者想让用户访问的页面上,如图3所示。如果是攻击者精心构造的恶意地址,用户很有可能被执行钓鱼攻击并安装恶意程序。

c81f40bc4d06196a4b89a84d3dd2b8ac.png

图2  用户实际输入的地址

1d536fbb2917a21cf62934a36c7160ca.png

图3  用户被引导跳转后的实际页面

在控制页面转向的地方校验传入的URL是否为可信域名,通常采用URL白名单机制。该机制可以有效地防止任意跳转。

$whithList=array('localhost:8080','localhost');

$url=$_GET['url'];

if(in_array($url,$whithList)) {

header("Location: $url");

} else {

exit("

非法域名请求

");

}

图4所示是添加白名单后的执行结果,它成功地阻止了页面跳转。

3eb58573a1b2aeabf7668b0c01b8081f.png

图4  阻止URL跳转漏洞

微信公众号:计算机与网络安全

ID:Computer-network

【推荐书籍】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值