0

在我们当前的项目中,我们使用 cookie 实现持久会话。当用户登录时,会生成会话哈希并通过用户 cookie 发送。在使用数据库中的相应会话条目检查的每个页面加载时,用户都已通过身份验证。

过去,如果我必须进行 csrf 令牌检查,我通常会为特定会话创建一个会话变量。在随后的每个 ajax 调用中,我都会将作为 ajax 请求中的自定义标头发送的 csrf 令牌与 session 变量进行匹配。

但是对于目前的项目,我找不到合适的方法来做到这一点。可以创建安全散列,并可以将其添加为自定义标头或隐藏输入字段,甚至可以作为 ajax 请求中的参数。但是我如何在客户端验证它?

目前我正在做类似的事情str_rot13(base64_encode(some_secret_key))并将其作为 csrf 令牌发送。

然后在服务器端我正在做相反的事情,获取 secret_key 并将其与我为我的应用程序配置的密钥匹配。然而,这对我来说似乎一点也不安全。我曾想过使用openssl_random_pseudo_bytes(32) , openssl_random_pseudo_bytes(16) etc..但是,那是我要生成的哈希值。我将如何在服务器端验证它?!

考虑到我遵循的用户身份验证机制,我可以采用哪些最佳实践?

4

0 回答 0