ajax – 反CSRF令牌和Javascript

前端之家收集整理的这篇文章主要介绍了ajax – 反CSRF令牌和Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图保护一个应用程序(PHP和大量的JS)从CSRF。

我想使用令牌。

很多操作都是用AJAX完成的,所以我必须在Javascript中传递令牌。
如果我想为每个会话或每页加载生成1个令牌,它很简单 – 我生成新的令牌,把它放在一个DOM的某个地方,然后用Javascript找到它,并发送到处理端。

但是如果我想对每个操作使用新的令牌呢?
我在想一个ajax调用来重新生成令牌,然后将结果传递到处理页面

这是否会增加安全风险?
我正在考虑诱使用户页面与脚本,这将请求令牌,然后使用它提出请求,但再次跨域Javascript被禁止
可以用闪光灯做吗?

也许另一种方法来保护来自CSRF的ajax调用

谢谢!

有几种技术,当一起使用时提供足够的CSRF保护。

唯一令牌

单个特定于会话的令牌对于大多数应用程序都是足够好的。只要确保你的网站没有任何XSS漏洞,否则你使用的任何令牌技术是一种浪费。

AJAX调用重新生成令牌是一个坏主意。谁会守卫守卫?如果AJAX调用本身易受CSRF攻击,那么它就会失败的目的。使用AJAX的多个令牌通常是不好的主意。它强制您序列化您的请求,即一次只允许一个AJAX请求。如果你愿意忍受这个限制,你可以为第二个AJAX调用捎带令牌响应第一个请求。

就个人而言,我认为最好对关键事务重新验证用户,并使用会话专用令牌保护剩余的事务。

自定义HTTP标头

您可以为每个请求添加自定义HTTP标头,并检查其在服务器端的存在。实际的密钥/值不需要是秘密的,服务器只需要确保它存在于传入请求中。

这种方法足以在较新版本的浏览器中保护CSRF,但是如果您的用户使用较旧版本的Flash Player,则可能会过度工作。

检查推荐人

检查引荐来源头是否也是好的保护在较新的浏览器中的CSRF。它不可能欺骗这个头,虽然它可能在旧版本的Flash。所以,虽然它不是万无一失,它仍然增加了一些保护。

解决验证码

强制用户解决验证码对于CSRF也是有效的。它不方便,地狱,但相当有效。这也许是唯一的CSRF保护工作,即使你有XSS漏洞。

概要

>使用基于会话的令牌,但重新验证高价值事务>添加自定义http标头,并检查引荐来源网址。两者本身都不是万无一失,但不要伤害

猜你在找的Ajax相关文章