7
在配置中设置如下 security: { csrf: { headerName: 'x-csrf-token', }, },
页面api 通过post方式提交,可以进行拦截,但是get方式api拦截不了,header中没有 x-csrf-token,还是可以正常访问?
请问下大家谁遇到过这个问题?如何解决的?
在配置中设置如下 security: { csrf: { headerName: 'x-csrf-token', }, },
页面api 通过post方式提交,可以进行拦截,但是get方式api拦截不了,header中没有 x-csrf-token,还是可以正常访问?
请问下大家谁遇到过这个问题?如何解决的?
GET 不用拦截吧。
正常 post 请求会带上 csrf token,也是先在 GET 时从 ctx 拿到(token 每次都不一样),再在后续 post 请求中带上。
如果 GET 也拦截,那需要一个"创世token"。
@Jeff-Tian get请求为啥不用?爬虫很容易就爬走了。。。虽然预防攻击或者爬虫不能单靠这个,但是我的疑问是post可以,为啥get不行。。。。同样在header中存储的
csrf 是防跨站点攻击,不是防爬的。可以去了解下对应的概念。
@atian25 嗯,说的很有道理,但是 我就是想问下 headerName: 'x-csrf-token' 不支持 get吗?只支持 post吗?
需要自己实现,可以写个中间件验证header 中的token
@Jeff-Tian 嗯,好的,谢谢,原理都知道,就是想着,要是支持,就不自己写了
这个实现原理无法防止爬虫,爬虫可以伪造 cookie