alexwen 的回答很好,虽然我认为他的回答更像是一个通用的参数清理问题,而不是 OWASP 所指的。我认为 OWASP 可能指的是以下任何概念。
从重定向重新验证数据
OWASP 讨论的是另一种方案,其中一个 URL 进行一些处理(即验证),然后重定向到另一个 URL 以完成。例如,假设有两个 URL,一个是 /checkout,另一个是 /ship。/checkout URL 检查信用卡信息,检查零件是否有库存等,然后重定向到 /ship。/ship URL 实际上创建了一个工作票来拉取零件并运送它们。
如果攻击者知道这个设置,那么攻击者可以直接将相关的运输数据发布到 /ship URL,绕过在第一个 URL 中执行的所有验证,并免费获得一些产品。
我个人从未见过如此愚蠢的验证方案,但这似乎是 OWASP 所指的。
重定向后获取模式
PRG 模式意味着在成功处理 POST 后重定向到 GET 请求。这用于避免用户单击浏览器中的后退按钮以及浏览器向用户询问有关是否“重新发布表单数据”的模糊问题的可怕可用性问题。(我已经看到这么多用户的这次旅行,这甚至都不好笑。)
我从未见过这种容易受到攻击的使用方式,但理论上一个糟糕的身份验证方案可能会使用 PRG 来处理身份验证凭据,然后重定向到“仅限会员”页面或类似的愚蠢的东西。再说一次,我个人从未在野外见过这种情况,所以我也不能 100% 确定 OWASP 所说的就是这个。
盲重定向
我不确定这就是 OWASP 所说的,但这实际上是一个常见的漏洞。与我描述的前两个漏洞不同,我实际上已经多次看到这个漏洞。这个常见的错误是要重定向到的 URL 在原始 URL 查询中指定并且没有经过验证,例如:
http://my.badsite.com/redirect.php?destination=http://google.com
如果redirect.php 无条件地重定向到传入的任何URL(例如,在PHP 中,header("Location:$location")),那么攻击者可以构造一个看起来安全但实际上会导致危险站点的URL。例如,如果盲重定向脚本位于http://nytimes.com/redirect.php,那么攻击者会向受害者发送一个类似http://nytimes.com/redirect.php?destination=http://spyware的链接.malware.xxx/get_pwned和一个天真的用户查看链接并认为他要去纽约时报网站。(根据脚本的确切性质,攻击者可能能够对部分或全部目标 URL 进行 URL 编码,以进一步混淆它。)
重定向脚本应该检查目标 URL 以确保它是合适的,可能通过某种白名单。