身份验证-每个ajax中的密钥



我正在编写新的应用程序,这次我想将HTML/JS层与PHP层完全分离。那是因为我将来会做phonegap版本。

我对身份验证有疑问。这次我不能使用会话变量,所以我必须找出新的身份验证方法。我打算这样试试:

  1. 用户填写登录表单并通过ajax将其发送到php文件
  2. Php文件检查登录名和密码是否正确,然后为该用户创建一个密钥令牌。将其保存在他的一侧(例如在mysql中),并将其作为javascript返回到客户端
  3. 浏览器正在接收密钥令牌,并将其保存在session_storage中
  4. 每个ajax请求都由这个令牌附加,然后由php进行验证

这个计划有漏洞吗?。也许有更简单/更好的解决方案。它的灵感来自php会话的工作方式,但使用密钥令牌而不是会话id。请帮助我。

我不能使用会话变量

您所描述的听起来非常像会话,但您将自己实现,而不是使用标准PHP会话处理程序的已知、经过测试的属性和灵活性。因此,即使您避免了固有的设计陷阱,也有在实现中注入缺陷的风险。

我强烈建议您使用标准的PHP机制(尽管您可能希望考虑更复杂的保存处理程序,即使它只是启用多层函数)。

假设您所描述的与PHP处理程序没有什么不同,那么,如果实现正确,它会起作用——它安全吗?不是根据你提供的信息。

会话存储确实提供了在不使用SSL的情况下执行更安全操作的可能性(尽管HTTPS是,如果安全性很重要,则必须具有),因为您可以预共享加密密钥(但初始密钥协商非常脆弱)。

您所描述的OTOH易受嗅探、注射和CSRF的影响。

相关内容

  • 没有找到相关文章

最新更新