我们可以通过ajax请求劫持CSRF令牌吗

时间:2018-10-28 11:19:46

标签: php ajax csrf

我的问题是关于csrf令牌,这些令牌的目标,我们可以伪造吗..

问题身份

让我们假设我们有bank.com,该URL可以对该帐户进行交易 bank.com/ make -transactions?amount = 100USD&to = [accountId] 该链接仅可由经过身份验证的用户(取决于cookie中的SessionID)从bank.com网站中具有交易表格的页面访问

问题出在恶意网站将伪造的表单包含隐藏字段并将其数据提交到上述网址时。导致此提交要发送的Cookie(与bank.com相关)中的SessionID发生,交易会完成

CSRF解决方案

此解决方案取决于生成令牌(CSRF令牌),该令牌随进行交易的bank.com页面一起发送(在隐藏字段中)并保存在当前用户会话中

在用户从交易页面提交数据后,将根据用户会话中的CSRF令牌值检查此令牌(将与数据一起提交),如果它们相等,则说明该交易有效,否则表示出了点问题,交易应该被拒绝

通过这种方式,它可以防止恶意网站通过提交虚假请求进行交易。因为它无法获取此CSRF令牌并将其注入请求中。

我的问题

1-如果恶意网站从用户浏览器向bank.com发出ajax请求(该请求将发送与bank.com相关的cookie。对吗?),它将从响应中提取CSRF令牌。然后以虚假形式注入该令牌。这会用这个被劫持的令牌伪造bank.com吗?

2-我可以在单页应用程序中从ajax端点生成CSRF令牌吗(让我说说要执行此操作。向服务器索要CSRF令牌并通过该操作提交此令牌)还是不可以(如果可以的话)知道)?

衷心感谢您的度过

1 个答案:

答案 0 :(得分:4)

  

如果恶意网站从用户浏览器向bank.com发出Ajax请求,该怎么办

…然后浏览器的Same Origin Policy将阻止恶意站点读取页面内容(除非您使用CORS明确允许它……否则不要这样做)。

  

我可以在单页应用程序中从ajax终结点生成CSRF令牌吗(让我们说说要采取行动