如果以下防止CSRF的方法有效,请告诉我。
任何人都可以看到通过cookie发送令牌并使用JavaScript读取而不是将其放入HTML中的任何漏洞吗?
答案 0 :(得分:2)
同步器令牌模式依赖于将客户端上已知的随机数据与表单中发布的随机数据进行比较。虽然你通常会在页面渲染时从一个填充了令牌的隐藏表单中获取后者,但是通过使用JavaScript来填充它,我看不到任何明显的攻击向量。攻击站点需要能够读取cookie以重建由于跨域cookie限制而显然无法执行的帖子请求。
您可能会发现OWASP Top 10 for .NET developers part 5: Cross-Site Request Forgery (CSRF)有用(很多一般的CSRF信息),特别是有关跨源资源共享的部分。
答案 1 :(得分:0)
如果正在监控人员流量,黑客也可能会获得令牌。但这听起来像一个伟大的计划。我会尝试添加蜜罐。尝试将令牌伪装成其他东西,所以这并不明显。如果它被触发,将坏用户发送到蜜罐,这样他们就不知道他们已经有了。
我的安全理念很简单,最好用故事说明 两个男人正在穿过树林。他们看到一只熊,吓坏了,开始跑步。当熊赶上他们并获得其中一个告诉对方时,“我们永远不会超过这只熊”。另一个人回答说:“我不必超越熊,我只能超越你!”
您可以添加到您网站的任何内容,以使其更安全,您将获得更好的效果。使用框架,验证所有输入(包括任何公共方法中的所有输入),你应该没问题。
如果您存储敏感数据我会设置第二个没有互联网访问的SQL服务器。让您的后端服务器不断访问您的前端服务器,使用虚假数据提取和替换敏感数据。如果您的前端服务器需要敏感数据(可能是这种情况),请使用一种特殊方法,该方法使用不同的数据库用户(有访问权限)从后端服务器提取数据。有人必须完全拥有你的机器来解决这个问题...而且你仍然需要足够的时间才能拔出插头。最有可能的是,他们会在意识到这一点之前提取所有数据......哈哈。
我希望我能更好地解决如何更好地保护客户以避免CSRF的问题。但你所拥有的东西看起来是一种非常好的威慑力。
答案 2 :(得分:0)
我特别喜欢@ 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).