在我们当前的项目中,我们使用cookie实现持久会话。当用户登录会话时,会生成哈希并通过用户cookie发送。在使用数据库中相应会话条目检查的每个页面加载上,并对用户进行身份验证。
过去如果我必须进行csrf令牌检查,我通常会为特定会话确定一个会话变量。并且在每个后续的ajax调用中,我将使用会话变量匹配在ajax请求中作为自定义头发送的csrf令牌。
然而,对于目前的项目,我找不到合适的方法来做到这一点。可以创建安全散列,可以将其添加为自定义标头或隐藏输入字段,甚至可以添加为ajax请求中的参数。但是我如何在客户端验证它?
暂时我正在做str_rot13(base64_encode(some_secret_key))
之类的事情并将其作为csrf令牌发送。
然后在服务器端我正在反向,获取secret_key并将其与我为我的应用程序配置的密钥匹配。然而,这对我来说似乎并不安全。我曾想过使用openssl_random_pseudo_bytes(32) , openssl_random_pseudo_bytes(16) etc..
但是再次,这就是我将要生成的哈希。我如何在服务器端验证它?!
鉴于我所关注的用户身份验证机制,我可以采用哪些最佳做法?