文章目录
1. URL 重定向
不安全的url跳转
不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。
如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话
就可能发生"跳错对象"的问题。
也就是说不安全的URL跳转漏洞是指在Web应用程序中存在未经验证的用户输入作为跳转目标URL的情况。攻击者可以利用这个漏洞,将用户重定向到恶意网站或执行其他恶意操作。
依次点击页面中的链接地址
在点击第4个的时候发现路径发生变化
我们可以将url的值修改为百度的链接地址进行尝试
发现跳转成功
1.1 源代码分析
修改前,当url参数的值不为 i 时,就会跳转到 url 值表示的页面。
1.2 漏洞防御
修改后,如果url的值为unsafere.php,则跳转到unsafere.php,如果url的值不为i,也不为unsafere.php,则留在当前页面,并显示提示信息。
页面显示结果如下:
防范URL重定向漏洞的方法:
-
对用户输入进行合法性验证:对于所有接收用户输入的参数,都需要进行合法性验证。验证方式包括检测是否为合法的URL、检测是否为域名白名单之内等。
-
避免使用直接的URL重定向:应避免直接使用输入参数中提供的URL地址进行重定向,可以使用一个中间转换链接(例如使用本站跳转)对URL进行重定向。
-
使用白名单过滤:维护白名单限制允许进行重定向的URL地址,可以有效限制攻击者可利用的重定向地址。
-
采用固定的重定向URL:在编写代码时,设置一个固定的重定向URL地址,或者设置一个预定义的URL地址参数,避免通过用户输入URL地址的形式来触发重定向操作。
-
限制重定向次数:设置最大重定向次数,如果超过预设值就结束重定向。这可以避免攻击者构造类似蜜罐攻击的链接,不断跳转用户浏览器,造成用户浏览器崩溃。
-
带有安全标志的重定向:使用安全标志,例如在URL中使用SSL证书或者添加额外的参数来传递当前会话信息等方式,可以增加重定向的安全性。