用户
 找回密码
 入住 CI 中国社区
搜索
查看: 1802|回复: 6
收起左侧

[版本 3.x] 关于token防跨站攻击的疑问

[复制链接]
发表于 2016-8-15 08:43:59 | 显示全部楼层 |阅读模式
表单中加入隐藏域,写入token,提交时在服务端验证,可以防止跨站攻击,但有个问题是, 在服务器生成的网页源代码中,可以明文找到这个token值,类似
<input type=hidden name='token_test' value='WE345RTKFITKT123' />,用户只要把这个复制过去,一样可以伪造一个表单进行提交,怎么解决这个问题呢?
发表于 2016-8-16 09:11:45 | 显示全部楼层
cocoonyun 发表于 2016-8-15 15:50
好像有点明白,好像又不太明白。那登录用户拿到token后,伪造一个表单向服务器提交数据怎么防范? ...

这个token,第三方链接(get或post)请求都是拿不到的。用户自己拥有这个token,自然有访问该链接的全部权限,不存在伪造请求。
看看csrf的原理,会明白的更清楚一些。
http://www.ifixedbug.com/posts/codeigniter-csrf-story
发表于 2016-8-15 10:38:57 | 显示全部楼层
token你可以保存在文件了啊  不用给别人看  比如config文件里
 楼主| 发表于 2016-8-15 14:25:19 | 显示全部楼层
Aloghli 发表于 2016-8-15 10:38
token你可以保存在文件了啊  不用给别人看  比如config文件里

怎么隐藏,最终还是会在客户端的源代码中显示的呀
发表于 2016-8-15 14:38:24 | 显示全部楼层
token 主要是用来防范 CSRF 攻击的,不是用来防范 XSS 攻击的。
所以拿到 token 是没关系的。
 楼主| 发表于 2016-8-15 15:50:53 | 显示全部楼层
Hex 发表于 2016-8-15 14:38
token 主要是用来防范 CSRF 攻击的,不是用来防范 XSS 攻击的。
所以拿到 token 是没关系的。 ...

好像有点明白,好像又不太明白。那登录用户拿到token后,伪造一个表单向服务器提交数据怎么防范?
发表于 2016-8-15 19:04:50 | 显示全部楼层
cocoonyun 发表于 2016-8-15 15:50
好像有点明白,好像又不太明白。那登录用户拿到token后,伪造一个表单向服务器提交数据怎么防范? ...

如果用户直接用 curl 提交表单,你是防不住的。
这里防的是通过普通的浏览器提交表单。
你可以看下 CSRF 和 XSS 攻击都是什么样的攻击。

本版积分规则