我正在编写的一个特定的 Web 服务与 API 接口。每个 API 调用都需要发送用户的用户名和密码,不维护任何状态。
理想情况下,当使用我的网络服务时,用户将输入他的 API 用户名和密码一次,我的网络服务将存储该信息直到会话结束。我了解出于安全考虑,我不应该使用 PHP 会话存储 API 密码,也不应该将其存储在数据库中。因此,如何在会话期间安全地存储和访问密码?
编辑: 加密密码、将加密密码存储在 cookie 中并将加密密钥存储在会话中的安全性如何?
使用像mcrypt这样的 PHP 扩展将加密的 API 用户名和密码存储在当前会话中。即时生成加密密钥并将其存储在 cookie 中(安全/HTTPS,仅限 HTTP)。即使在服务器数据泄露的情况下,攻击者仍然需要访问驻留在每个用户计算机上的 cookie。
或者,尝试加密整个会话。PHP Secure Session 类使用类似的技术(存储在 cookie 中的加密密钥)结合session_set_save_handler
透明地加密/解密会话。