所以我知道有很多关于 CSRF 的问题(因为我已经阅读了其中一些),但有一点我仍然不明白。让我们想象以下情况:
我在我的服务器上登录(使用 cookie),那里有一个带有“删除我的帐户”按钮的页面。我不想按。
我访问了一个黑客的服务器:
一个。我的浏览器请求包含 JS 的“bad.html”,并定义了回调函数。它还有一个类似的脚本:(从而避免了同源策略问题)
var s = document.createElement('script'); s.src = 'url to "deleteAccountPage" of my server?' s.src += 'callback=hackerCallback'; s.type = 'text/javascript'; document.body.appendChild(s);
湾。脚本被“附加”,浏览器将加载页面,然后调用hackerCallback,将页面HTML文本作为参数传递。
C。使用此 HTML,回调可以在其中解析令牌。
hackerCallback 现在有了令牌,在“deleteMyAccount”页面上向我的服务器发送 Ajax 请求。
我的帐户现在已被删除,因为令牌、cookie 甚至浏览器跟踪都与服务器注册的匹配。
你如何避免这种行为?我已经阅读了有关仅在我的服务器上允许某些标头的内容。这将缩短我服务器上的所有跨域请求,但是根据此链接(http://blog.alexmaccaw.com/jswebapps-csrf)这还不够......(我完全相信)
感谢帮助 Seba-1511