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