X-Request-With 标头服务器检查是否足以防止 ajax 驱动应用程序的 CSRF?
我正在开发一个完全由ajax驱动的应用程序,其中所有请求都通过基本上相当于主控制器的内容,该控制器在其骨架上看起来像这样:
if(strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
fetch($page);
}
这通常是否足以防止跨站点请求伪造?
当整个页面未随每个请求刷新时,使用旋转令牌相当不方便。
我想我可以在每个请求中将唯一令牌作为全局javascript变量进行传递和更新 - 但不知何故,这感觉很笨拙,并且似乎本质上是不安全的。
编辑 - 也许静态令牌,如用户的UUID,总比没有好?
编辑#2 - 正如The Rook指出的那样,这可能是一个令人毛骨悚然的问题。我读过两种方式的猜测,并听到了关于旧版本的flash可以利用这种恶作剧的遥远的耳语。由于我对此一无所知,因此我正在为任何能够解释这是CSRF风险的人提供赏金。否则,我会把它交给Artefacto。谢谢。