理论AJAX CSRF

时间:2014-07-08 14:16:19

标签: security csrf

我会用一个例子来表达我的问题,因为它会更有意义。假设组织X使用基于会话的身份验证,并且有一些端点Y,经过身份验证的用户向其浏览器发送GET请求,以便拥有“删除帐户”。表格呈现。据我了解,通常,组织X会放入一个nonce,它将作为数据属性嵌入到客户端的表单中。这个现时应该停止CSRF。

如果恶意网站Z有一个脚本向端点Y发送AJAX GET请求并将HTML加载到具有css样式的div中,那么该怎么办?显示:无;'与站点Z上的脚本位于同一页面上。从那里,恶意站点Z不会访问nonce,然后它可以与呈现的表单一起使用以代表经过身份验证的用户提交删除请求吗? / p>

2 个答案:

答案 0 :(得分:3)

继@ akirilov的回答之后,将另一个网站加载到框架中可能会对框架网站造成安全风险,因为这可能会造成Clickjacking攻击。

这是IFrame的内容对用户隐藏的地方,但却被攻击网站上的UI伪装。

e.g。请将以下网址加载到IFrame中:https://www.example.com/transferMoney?amount=1000000&to=999其中999是攻击者自己的帐户,受害者已经在example.com登录了他们的银行。

www.evil.com可以使IFrame透明,然后将自己的按钮放在要呈现Transfer Money按钮的位置下方。攻击者的按钮可以说出诱人的内容,例如FREE iPAD!。当点击该按钮时,用户实际上是点击银行网站上的转移按钮,并且他们只是转移资金而不是明智之举。

可以通过输出following HTTP response header来阻止此类攻击,以防止浏览器在一个框架内加载您的网页: -

X-Frame-Options: DENY

答案 1 :(得分:2)

我可能误解了你的问题,所以请告诉我是否属于这种情况,但这是如何运作的:

  

如果恶意网站Z有一个发送AJAX GET的脚本,该怎么办?   请求到端点Y并将HTML加载到具有css样式的div中   '显示:无;'在与网站Z上的脚本相同的页面上

由于同源策略,站点Z无法访问站点Y上的DOM对象,因此无法读取该随机数。它能做的最好的事情就是将页面Z加载到IFrame中,但不会允许CSRF。