一般说防止 csrf 攻击 服务端下发 token 到表单里 提交时进行比对即可防住
但是如果攻击者盗取了 cookie 他通过 cookie 登陆网站 不是也得到了 token 吗
这样一来不还是防不住吗
还是我哪里理解错了 求大神指点
1
des 2017-03-04 13:21:47 +08:00 via Android
csrf 攻击者是弄不到 cookie 的,所以有 http only
|
2
gamexg 2017-03-04 14:14:16 +08:00
xxs 攻击才能够执行 js ,才有可能获得非 http only 的 js 。这个要求在所有输出的地方做转义。
|
4
torbrowserbridge 2017-03-04 14:17:27 +08:00 via iPhone
@gamexg xss
|
5
gamexg 2017-03-04 14:21:09 +08:00
这么说吧, csrf 攻击是这样的:
1.网站删除文章功能是个 post 请求 2.攻击者构建一个网页,网页自动提交删除的那个 post 请求,现在的 html 规范是允许这种提交的。 3.引诱管理员访问这个网页。 4.这个网页自动提交了删除的那个 post 请求。按照浏览器规则,这个请求会带着被攻击网站的 cookie ,是以管理员的身份提交的。 5.如果没有做 csrf 防护,那么这个删除请求会被执行。而如果做了防护,攻击者是无法获得 token ,删除请求不会被执行。 xxs 可以看作是前端的注入,输出用户提交的内容未作过滤,造成访问时会自行攻击者的 js ,那么这时候攻击者是可以获得和网页 js 同一权限 。虽然 http omly 可以预防获得 cookie ,但是攻击者是可以以用户身份执行操作的,例如如果时管理员中招,可以删帖等。如果时普通用户中招,可以添加关注,可以继续向其他好友发起攻击进行传播等。 |
7
xu33 OP @gamexg
我的意思不是说攻击者在他的网站上内嵌你的提交请求 而是他通过某种手段 例如在路由层面 或者是用 xss 注入窃取了非 httponly 的 cookie 那么你做不做 csrf 防护都是没用的 |
8
gamexg 2017-03-04 14:39:57 +08:00
|
9
des 2017-03-04 14:48:54 +08:00
@gamexg
这样说吧,别人从后门( XSS )拿到你家的钥匙( cookie ),你却要怪前门的防盗门( token )不安全。 再者说都拿到你的钥匙了,还需要去弄 CSRF ?? 再说了 CSRF 需要去访问你挂了脚本的网站,你以为这个很简单 |
10
gamexg 2017-03-04 15:04:12 +08:00
@des #9 不明白你的意思。
>这样说吧,别人从后门( XSS )拿到你家的钥匙( cookie ),你却要怪前门的防盗门( token )不安全。 不明白从那里理解出来的 怪 token 不安全。 说的是 5 楼?那里已经说了网站如果使用了 http only cookie 。那么就不能按照常规的 xss 攻击只获取 cookie 了,这样获得的 cookie 是不齐全的,攻击者拿到了导入本地浏览器也无法使用。不过这时候是可以通过 js 来做那几个操作的。 >再说了 CSRF 需要去访问你挂了脚本的网站,你以为这个很简单 这个难度是有,但是并不是很大,例如在 v2 发个新闻,说是 google 被人脱裤了,留个网址,信不信会有一批人点进去看? 出个热点有时候能够看到评论被 V2EX 刷屏。 另外对于 get 请求就可以执行的,可以直接作为贴图,点开帖子就会中招。 |
11
otakustay 2017-03-04 15:26:14 +08:00
楼主应该把事情搞混在一起了, CSRF 就是 CSRF , XSS 就是 XSS
XSS 的特征是攻击行为操作人知情, CSRF 的特征是攻击行为操作人不知情 因此在 CSRF 中,不知情的操作是无法替攻击者进行 XSS 攻击行为的 所以,防 XSS 就防 XSS ,防 CSRF 就防 CSRF ,不用把 2 个事情混一起想太复杂,两边都做好防御就行了 |
12
crab 2017-03-04 15:29:23 +08:00
有 cookie 了,还需要 token 干啥啊。
|
13
xu33 OP |
14
ksc010 2017-03-04 15:57:18 +08:00
@xu33 拿到用户 cookie 有这么两种方式
1. 网络层劫持(通过运营商网关、本地木马等) 2. XSS 跨站脚本 对于上面两种情况 若网站没有对“危险操作”有其他层面的二次校验(密码、手机短信等)的话 是不大可能防住的 |
15
nfroot 2017-03-04 16:56:03 +08:00
防 CSRF ,用 token
防 XSS , 过滤用户提交的数据 防中间人,上 HTTPS+HSTS 防对方拿到用户 Cookie 后做危险操作 , 麻烦你重要操作做二次认证(比如短信,扫码,邮箱, QQ 、微信等其他设备方式的验证) 还啥问题?感觉你是来 PK 的,不是来询问的。 |
16
reb00ts 2017-03-04 19:52:47 +08:00
楼主可以简单的这么理解吧, CSRF 是借 Cookie 去干坏事(实际并未拿到用户 Cookie ),而 XSS 是盗取 Cookie 干坏事。
|
17
phx13ye 2017-03-05 09:20:36 +08:00 via iPhone
mark
|