我试图从CSRF保护一个应用程序(PHP和大量的JS)。反CSRF令牌和Javascript
我想使用令牌。
很多操作用AJAX做,所以我必须通过JavaScript中的令牌。 如果我想为每个会话或每页加载生成1个令牌,那么很简单 - 我生成新的令牌,将它放在DOM中的某个位置,然后用Javascript找到并发送给处理端。
但是,如果我想使用新的令牌每个操作呢? 我在考虑做一个ajax调用重新生成令牌,然后将结果传递给处理页面。
这会增加安全风险吗? 我在想引诱用户到页面的脚本,它会询问令牌,然后用它来发出请求,但是再次跨域Javascript是禁止的。 可以用闪光灯完成吗?
也许对于保护Ajax调用从CSRF另一种方法?
谢谢!
添加一个自定义http标题困扰我,我敢肯定,你可以伪造自定义http标题与闪光和发射一个请求到另一台服务器,只要标题元素不在黑名单中。我查看了近期对闪存的更改(在过去3个月内),并且他们修复了控制“跨站点文件上传”攻击所需的整个POST段的能力。除此之外,我认为它的好信息,我给你+1。 – rook 2010-09-08 19:13:26
是的,这里是黑名单,当然引用者是不允许的,但从字面上看,其他的都是。 http://kb2.adobe.com/cps/403/kb403030.html – rook 2010-09-08 19:15:18
@The Rook - Re。添加自定义标题 - 请参阅http://www.adobe.com/devnet/flashplayer/articles/flash_player_10_security.pdf。具体来说,请参阅标题为“标题发送权限”的部分。我引用'当SWF文件希望将自定义HTTP标头发送到其自己的主机以外的任何位置时,发送请求的HTTP服务器上必须有一个策略文件。记住http://stackoverflow.com/questions/2609834/gwt-rpc-does-it-do-enough-to-protect-against-csrf?这就是我了解这个事实的难处。 – 2010-09-08 19:25:47