Jul*_*iet 23 javascript security csrf web
我一直在阅读使用同步器令牌模式来防止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.
Fre*_*Ben 22
这是安全的原因,并且maliciousSite.com不能简单地做一个GET,窃取令牌,然后做一个POST是请求是由用户的浏览器完成的,而不是由服务器完成的maliciousSite.com.返回的所有数据fakebank.com都返回给用户的浏览器,而不是返回给服务器maliciousSite.com.如果maliciousSite.com执行GET以检索令牌,则它将是与发布给用户的令牌不同的令牌. 由于相同的域限制,maliciousSite.com无法将此cookie设置为要提交的用户浏览器fakebank.com.
CSRF POST攻击的工作原理是欺骗用户的浏览器fakebank.com/withdrawForm.html直接使用正确形成的POST请求.服务器fakebank.com愉快地执行请求POST,从而使用POST正文中提供的参数(包括属于被放置在那里的攻击者的目标帐户)来转移资金maliciousSite.com.服务器at maliciousSite.com不需要查看返回的数据,因为已经采取了行动(除非fakebank.com使用这些CSRF令牌,maliciousSite.com除非以某种方式泄露,否则无法知道这些令牌.它不能要求它) .如果fakebank.com使用CSRF令牌,maliciousSite.com则会提交POST缺少令牌的请求,从而表明正在进行的潜在CSRF攻击.
此方法的漏洞包括使用CSRF令牌,该令牌未保密,并以某种方式泄露.此外,如果CSRF令牌不够随机,那么maliciousSite.com可能能够猜测它.此外,如果浏览器执行相同域策略存在缺陷,则可以利用此漏洞.一般来说,现代浏览器不容易受此影响.
如果这是一个不充分的解释,请告诉我,我会尝试为你说清楚一点.