ajax – 反CSRF令牌和Javascript
我试图保护一个应用程序(PHP和大量的JS)从CSRF。
我想使用令牌。 很多操作都是用AJAX完成的,所以我必须在Javascript中传递令牌。 但是如果我想对每个操作使用新的令牌呢? 这是否会增加安全风险? 也许另一种方法来保护来自CSRF的ajax调用? 谢谢!
有几种技术,当一起使用时提供足够的CSRF保护。
唯一令牌 单个特定于会话的令牌对于大多数应用程序都是足够好的。只要确保你的网站没有任何XSS漏洞,否则你使用的任何令牌技术是一种浪费。 AJAX调用重新生成令牌是一个坏主意。谁会守卫守卫?如果AJAX调用本身易受CSRF攻击,那么它就会失败的目的。使用AJAX的多个令牌通常是不好的主意。它强制您序列化您的请求,即一次只允许一个AJAX请求。如果你愿意忍受这个限制,你可以为第二个AJAX调用捎带令牌响应第一个请求。 就个人而言,我认为最好对关键事务重新验证用户,并使用会话专用令牌保护剩余的事务。 自定义HTTP标头 您可以为每个请求添加自定义HTTP标头,并检查其在服务器端的存在。实际的密钥/值不需要是秘密的,服务器只需要确保它存在于传入请求中。 这种方法足以在较新版本的浏览器中保护CSRF,但是如果您的用户使用较旧版本的Flash Player,则可能会过度工作。 检查推荐人 检查引荐来源头是否也是好的保护在较新的浏览器中的CSRF。它不可能欺骗这个头,虽然它可能在旧版本的Flash。所以,虽然它不是万无一失,它仍然增加了一些保护。 解决验证码 强制用户解决验证码对于CSRF也是有效的。它不方便,地狱,但相当有效。这也许是唯一的CSRF保护工作,即使你有XSS漏洞。 概要 >使用基于会话的令牌,但重新验证高价值事务>添加自定义http标头,并检查引荐来源网址。两者本身都不是万无一失,但不要伤害 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |