PHP表单安全与引用怎么做?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我正在组建一个网站,使其可供用户输入。我想知道是否编写一个函数,如:

if(getenv("HTTP_REFERER") != 'http://www.myURL.com/submitArea'){
        die('don\'t be an jerk, ruin your own site');   
    }else{
        // continue with form processing    
    }

以防止跨站点表单提交。

提问于
用户回答回答于

实际上,根据OWASP CSRF预防备忘单,在大多数情况下,检查引用者足以修补CSRF漏洞。尽管在你的OWN浏览器上欺骗引用者是微不足道的,但是它不可能在另一个浏览器上(通过CSRF)欺骗它,因为它违反了规则。

用户回答回答于

我误读了关于跨站点伪造的部分:为此,检查引用者一种有效的安全措施,因为CSRF依赖指向受保护页面的操纵链接(受攻击的用户拥有权限)。

唯一的例外是如果攻击可能发生在受到攻击的Web应用程序中,例如通过注入恶意JavaScript代码。在这种情况下,引用者检查是无用的,因为攻击来自“安全”URL,但也可以说是基于会话或一次性令牌的解决方案,因为令牌可以触及恶意JavaScript并且可以轻松检索。

但是,使用一次性令牌非常适用于防止此类攻击,因为HTTP_REFERER某些代理已将其剥离。

扫码关注云+社区