Security 这种CSRF对策有效吗?

Security 这种CSRF对策有效吗?,security,web-applications,csrf,Security,Web Applications,Csrf,请让我知道以下预防CSRF的方法是否有效 在服务器上生成令牌并保存 通过cookie向客户端发送令牌 客户端上的Javascript读取cookie并在发布前向表单添加令牌 服务器将表单中的令牌与保存的令牌进行比较 通过cookie发送令牌并用JavaScript读取而不是将其放入HTML中,任何人都能看到任何漏洞吗?如果正在监视人员流量,黑客可能也会获得令牌。但这听起来是个很棒的计划。我会尝试加一个蜜罐。试着把令牌伪装成其他东西,这样它就不明显了。如果它被触发,将坏用户发送到蜜罐中,这样他们就

请让我知道以下预防CSRF的方法是否有效

  • 在服务器上生成令牌并保存
  • 通过cookie向客户端发送令牌
  • 客户端上的Javascript读取cookie并在发布前向表单添加令牌
  • 服务器将表单中的令牌与保存的令牌进行比较

  • 通过cookie发送令牌并用JavaScript读取而不是将其放入HTML中,任何人都能看到任何漏洞吗?

    如果正在监视人员流量,黑客可能也会获得令牌。但这听起来是个很棒的计划。我会尝试加一个蜜罐。试着把令牌伪装成其他东西,这样它就不明显了。如果它被触发,将坏用户发送到蜜罐中,这样他们就不知道自己被攻击了

    我的安全哲学很简单,最好用一个故事来说明。
    两个人正穿过树林。他们看到一只熊,吓了一跳,开始奔跑。当熊追上它们并抓住其中一只时,它告诉另一只,“我们永远也跑不过这只熊”。另一个人回答说:“我不必跑得比熊快,我只要跑得比你快就行了!”

    任何你可以添加到你的网站,使其更安全,你会更好。使用一个框架,验证所有输入(包括任何公共方法中的所有输入),您应该可以

    如果您存储敏感数据,我将设置第二台sql server,而不访问internet。让后端服务器不断访问前端服务器,提取敏感数据并用虚假数据替换。如果前端服务器需要该敏感数据(很可能),请使用一种特殊方法,使用不同的数据库用户(具有访问权限)将其从后端服务器中取出。必须有人完全拥有你的机器才能解决这个问题。。。而且你仍然需要足够的时间才能拔出插头。最有可能的是,他们会在意识到你的数据是假的之前把你所有的数据都提取出来。。。哈哈


    我希望在如何更好地保护您的客户以避免CSRF方面有一个好的解决方案。但是你所拥有的看起来是一个很好的威慑。

    同步器令牌模式依赖于将客户端上已知的随机数据与表单中发布的数据进行比较。虽然您通常会在页面呈现时从填充了令牌的隐藏表单中获得后者,但通过使用JavaScript填充它,我看不到任何明显的攻击向量。攻击站点需要能够读取cookie以重建post请求,但由于跨域cookie的限制,它显然无法这样做

    您可能会发现有用的信息(大量的通用CSRF信息),特别是关于跨来源资源共享的部分。

    上有一些关于这个主题的有用讨论

    我特别喜欢@AviD的回答:

    Don't.
    -
    Most common frameworks have this protection already built in (ASP.NET, Struts, Ruby I think), or there are existing libraries that have already been vetted. (e.g. OWASP's CSRFGuard). 
    

    这一切似乎都需要大量的工作来制造一些混淆,并避免实际解决问题。我还有一个故事:如果你不打算解决一个问题,至少不要努力解决它。你在这里关于跑得比熊快的想法假设熊不在乎抓谁。如果你是一家银行,而另一个家伙是一家新闻网站,我想攻击者可能会继续追击你,即使你再快一点。