使用 UID 作为密钥是否可以防止 CSRF 攻击?

Does using the UID as a key serve to prevent CSRF attacks?

登录应用程序的用户的 UID 用作记录在数据库中的键,如下例所示:

https://example.com/foo/uid/setitem

即使有了这个实现,用户仍然可以对该应用程序执行 CSRF 攻击吗?怎么样?

如果 uid 是哈希值或一些无法猜测或获取的字符串。您的方法可以防止 CSRF。但是这个方法并不是一个好方法。因为因为 uid 不会改变(通常一个用户的 uid 永远不会改变),所以如果攻击者得到这个,他就可以攻击。所以要防止CSRF,最好的办法就是为你想保护的api生成一个CSRF_token。对于这些apis,当客户端请求时,它必须包含CSRF_token(在header中,post形式或者在url本身。不要在cookie中包含这个由于 cookie 可能会被 XSS 攻击获取)。