1
hanhui 2013-09-17 10:21:59 +08:00
可以去看看微博、QQ、其他开源软件怎么做。
据我了解,Discuz、腾讯微博都是没有每次请求更换token的,而是每个登录session初始化一个token。腾讯微博的算法稍微复杂点,从cookie传过来,然会js解密换算后,通过url传递回去的;discuz通过forum filed提交。其实微博貌似都没用csrf token,简单看了下。 个人感觉通过session就够了。没有绝对的安全。 |
2
luikore 2013-09-17 10:24:55 +08:00
不用更新, 用页面上那个就可以了. csrf token 只有一种目的: 防止跨站提交.
如果别人能截取到你提交的 token, 那他也能截取每次的返回结果, 已经是超出 csrf 的范围的问题了, 更新了也没用. |
4
hanhui 2013-09-17 10:54:49 +08:00
@luikore 我没让作者去看oauth部分。不过oauth获取code过程中也有防止csrf的字符串。我是让楼主去参考腾讯微博的csrf token设计。
|
5
roricon 2013-09-17 12:06:04 +08:00 1
以jQuery为例,你ajax请求时多返回一条token的值,之后在callback函数里面用js更改token相关的HTML DOM.
|
6
6711411 2013-09-17 18:06:01 +08:00
token 怎么会更新? session 没变, token 也不会变.
|
7
fanzc 2013-09-17 18:34:32 +08:00 1
|
8
breeswish 2013-09-17 21:36:45 +08:00 1
csrf-token的目的是,让攻击者不能伪造请求(如通过img发起的请求会带上cookie)。因此,csrf-token不需要每个请求都改变,只需要确保对于每个session不一致即可,同一个session内不变没有问题。
|