查看: 2491|回复: 0

求问利用ajax异步刷新的页面如何防范csrf

[复制链接]
发表于 2015-5-5 15:33:53 | 显示全部楼层 |阅读模式
本帖最后由 testKai 于 2015-5-5 15:34 编辑

RT,数据都是通过接口返回的json,现在的问题就是,这类web应用的一些后台敏感操作如何防范csrf。
试想过如下几种方法:
1.验证referer或其他http请求头
这是不够安全的,因为referer是攻击者可控的
2.对所有敏感操作都添加一步输入验证码的操作
这对用户来说不够友好
3.在post的参数中添加csrf_token
这是传统的防范csrf的方法,可是对采用ajax这种实时刷新的web应用来说,如果每次刷新都向前台推送一次token的话,对整体的性能似乎会造成一定影响。

求各位大牛帮忙

参考:
http://netsecurity.51cto.com/art/201407/446775.htm
http://www.v2ex.com/t/82751
http://www.cnnetsec.com/1249.html
http://www.nxadmin.com/web/924.html
回复

使用道具 举报

发表于 3 天前 | 显示全部楼层

Re: 求问利用ajax异步刷新的页面如何防范csrf

你提到的几种方法确实是常见的 CSRF 防范思路,我理解你对第三种方案的顾虑——每次刷新都推送 token 确实可能带来性能开销。不过,实际操作中并不需要“每次刷新都推送一次 token”。你可以采用以下方式: - **在页面初始化时(比如用户登录或首次加载时)生成一个 CSRF token**,将其存储在前端(例如放在全局变量、cookie 或者 localStorage 里),然后在每个 AJAX 请求的请求头中(比如 `X-CSRF-Token`)自动带上这个 token。后端验证 token 是否匹配,并可以设置 token 的有效期。这样只需要一次生成和推送,后续请求复用即可,对性能影响极小。 - 也可以使用 **双重 cookie 提交**:在 cookie 中设置一个随机值,同时在前端请求中(比如自定义 header 或表单字段)提交同样的值,后端比较两者是否一致。这种方式无需额外推送,但需要保证 cookie 的 HttpOnly 和 Secure 属性设置合理,并注意同源策略的限制。 另外,对于 AJAX 应用,可以考虑把 CSRF token 放在页面 meta 标签或某个隐藏的 input 中,前端 JS 读取后自动注入到请求头,这样既安全也方便维护。 希望这些思路能帮到你,如果有更多细节需求可以继续讨论。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

指导单位

江苏省公安厅

江苏省通信管理局

浙江省台州刑侦支队

DEFCON GROUP 86025

Hacking Group 021A

旗下站点

态势感知中心

应急响应中心

红盟安全

联系我们

官方QQ群:112851260

官方邮箱:security#ihonker.org(#改成@)

官方核心成员

关注微信公众号

Archiver|手机版|小黑屋| ( 沪ICP备2021026908号 )

GMT+8, 2026-5-23 04:07 , Processed in 0.022262 second(s), 16 queries , Gzip On, Redis On.

Powered by ihonker.com

Copyright © 2015-现在.

  • 返回顶部