接受自动重定向的 URL 参数有什么风险?

信息安全 php xss 网址重定向
2021-09-09 05:08:08

任何人都可以说出以下场景的所有风险:

用户访问了一个页面,但他的会话已过期,因此他会自动重定向到登录页面,并将其上一页和参数添加为单个参数,使用 PHP 编码urlencode()

https;//www.example.com/login.php?previous_page=%2Fdashboard.php

登录后,自动重定向到:

https;//www.example.com/dashboard.php

我目前知道两个:

  1. 包含外部域名的操纵链接,例如: https://www.example.com/login.php?previous_page=http%3A%2F%2Fxss.com%2Fmalware.php
  2. 包含脚本的操纵链接,例如: https://www.example.com/login.php?previous_page=%3Cscript%3Ealert(document.cookie)%3B%3C%2Fscript%3E

目前通过仅接受以(encoded )previous_page开头的 param 的值来防止这些。是否有更多的风险需要捕捉?%2F/

1个回答

有人可以通过将链接//xss.com/malware.php编码为https://www.example.com/login.php?previous_page=%2F%2Fxss.com%2Fmalware.php. 为防止这种情况,您可以将站点根目录的路径作为参数传递,因此您将只传递dashboard.php. 然后在服务器端组装完整的链接。