任何人都可以说出以下场景的所有风险:
用户访问了一个页面,但他的会话已过期,因此他会自动重定向到登录页面,并将其上一页和参数添加为单个参数,使用 PHP 编码urlencode():
https;//www.example.com/login.php?previous_page=%2Fdashboard.php
登录后,自动重定向到:
https;//www.example.com/dashboard.php
我目前知道两个:
- 包含外部域名的操纵链接,例如:
https://www.example.com/login.php?previous_page=http%3A%2F%2Fxss.com%2Fmalware.php - 包含脚本的操纵链接,例如:
https://www.example.com/login.php?previous_page=%3Cscript%3Ealert(document.cookie)%3B%3C%2Fscript%3E
目前通过仅接受以(encoded )previous_page开头的 param 的值来防止这些。是否有更多的风险需要捕捉?%2F/