繁体   English   中英

如何使用Synchronizer Token Pattern来防止CSRF安全?

[英]How is using Synchronizer Token Pattern to prevent CSRF safe?

我一直在阅读使用同步器令牌模式来防止CSRF(CSRF意味着跨站点请求伪造。),我不明白它实际上是如何安全的。

假设我有一个虚假的银行网站fakebank.com,有两个网址:

  • fakebank.com/withdrawForm.html - 显示提款单的GET请求
  • fakebank.com/doWithdraw - 发送到此网址进行撤销

我对安全漏洞的理解是, maliciousSite.com可以将POST请求伪装到fakebank.com/doWithdraw ,如果你当前登录到fakebank,POST将会成功。

假设我们实现了一个同步器令牌模式,它将在fakebank.com/withdrawForm.html上嵌入一个密码。 不能使用maliciousSite.com欺骗该表单的GET请求,解析html结果,获取令牌,然后使用该令牌创建POST请求?

这假设fakebank.com没有检查HTTP Referrer或Origin或者maliciousSite.com成功欺骗了Referrer / Origin是fakebank.com。

这是安全的原因,并且maliciousSite.com不能简单地进行GET ,窃取令牌,然后执行POST是请求由用户的浏览器完成,而不是由maliciousSite.com的服务器完成。 fakebank.com返回的所有数据都将返回给用户的浏览器 ,而不是maliciousSite.com上的服务器。 如果maliciousSite.com执行GET以检索令牌,则它将与发布给用户的令牌不同。 由于相同的域名限制, maliciousSite.com无法将此cookie设置为用户的浏览器提交到fakebank.com

CSRF POST攻击通过欺骗用户的浏览器直接使用正确形成的POST请求来请求fakebank.com/withdrawForm.html fakebank.com的服务器愉快地执行请求的POST ,从而使用POST正文中提供的参数(包括属于由maliciousSite.com放置的攻击者的目标帐户)来转移资金。 maliciousSite.com上的服务器不需要查看返回的数据,因为已采取行动(除非fakebank.com使用这些CSRF令牌, maliciousSite.com不可能知道,除非以某种方式泄露它不能要求它。 如果fakebank.com使用CSRF令牌,那么maliciousSite.com将提交缺少令牌的POST请求,从而表明正在进行的潜在CSRF攻击。

此方法的漏洞包括使用CSRF令牌,该令牌未保密,并以某种方式泄露。 此外,如果CSRF令牌不够随机,那么maliciousSite.com可能会猜测它。 此外,如果浏览器执行相同域策略存在缺陷,则可以利用此漏洞。 一般来说,现代浏览器不容易受此影响。

如果这是一个不充分的解释,请告诉我,我会尝试为您说明一点。

这就是重点。 浏览器中的同源策略不允许向其他站点发出GET请求。 因此,没有站点可以在浏览器中使用Javascipt从另一个站点获取CSRF令牌。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM