打开重定向保护

时间:2012-05-23 04:47:43

标签: php apache security

Google's Webmaster blog写了一些关于如何防止滥用Open Redirect Protection的解决方案,我已经被一些解决方案困扰了很长一段时间,我尝试使用谷歌搜索但没有找到结果。

  1. 更改重定向代码以检查referer
  2. 考虑使用白名单
  3. 考虑签署重定向
  4. 特别禁止异地重定向
  5. 我对解决方案的猜测:

    1. 使用%{HTTP­_RE­FERER}在网址请求中进行一些检查
    2. 在网址请求中使用一些正则表达式来检查网址是否在网址中 请求在正则表达式范围内
    3. 想不到任何
    4. 想不到任何
    5. 如果我的猜测是正确的,请告诉我,如果他们不是,请告诉我如何在PHP或Apache中正确地做到这一点。谢谢!

2 个答案:

答案 0 :(得分:1)

  1. 正确,但这不是一个可靠的方法。可以操纵HTTP Referrer。
  2. 定义允许重定向到的网址列表,与此列表进行比较并取消重定向到任何其他网址。
  3. 将重定向的盐渍哈希添加为重定向参数。在重定向之前,请检查请求参数的散列。如果计算的散列与请求参数中的散列相同,则可能不会进行请求操作 - >可以执行重定向。这可以防止执行任何重定向,除非有人猜到你的哈希生成算法(这就是你必须用密钥加盐的原因)。
  4. 取消所有重定向,这些重定向将导致任何不包含您网站的网址作为主机。正如你猜到的那样,这可以用正则表达式来完成。

答案 1 :(得分:0)

当您的应用程序根据用户提供的内容(即POST或GET)进行盲目重定向时,可以进行开放式重定向。开放重定向最常被网络钓鱼攻击利用。

要阻止打开重定向,您应该验证并验证您重定向到的任何URL(如果该URL来自用户输入)。应根据白名单进行验证。