侧边栏壁纸
  • 累计撰写 46 篇文章
  • 累计创建 23 个标签
  • 累计收到 3 条评论

目 录CONTENT

文章目录

URL Redirect引起的安全问题

elthon
2021-07-30 / 0 评论 / 0 点赞 / 317 阅读 / 925 字

http协议中规定 301,302 可以让Web服务器告诉浏览器,你访问的这个地址我需要进行跳转,具体的跳转地址我在Location这个值里面说了。你按照这个里面的值跳转到新的地址就好了。

那么这里服务器如果对跳转后的地址没有进行校验的话,会在某些场景下,让客户跳转到不是本来要去的地址(比如恶意的钓鱼地址,黄色网站,赌博网站等等)。

具体的场景主要发生在做sso登录的时候,我们知道,有很多网站,刚开始时可以不需要登录的,等你点击了某些需要登录的地址的时候,系统才转到登录地址,让你输入用户名、密码登录,登录成功后,会自动跳转到你之前浏览到地址。

那么,这里登录成功后自动跳转的地方,就是可能会出现上述存在安全问题的地方了。通过伪造跳转地址,可以骗过本来应该跳转的真实地址,转而跳转到构造后的恶意地址。

有几种方式来构造恶意地址(针对安全检查机制不完善的):
1、 通过在跳转URL中增加@符号来实现跳转,你可以在浏览器中(Chrome)测试一下这个地址: https://[email protected] ,你会发现你访问后,不是打开的百度,而是打开的新浪。 所以我们通过构造类似这样的地址来跳转到恶意地址

2、通过在跳转URL中增加?符号来实现跳转,你可以在URL中这样设置
https://www.sina.com.cn?www.baidu.com 这样www.baidu.com变成了前面恶意地址到参数了

3、通过在跳转URL中增加/符号来实现跳转。和?类似。

因此在做跳转逻辑的时候,后端需要对前端传来的跳转地址进行校验,符合条件的才进行跳转,否则跳转到固定的正常也没。

0

评论区