Php 在会话cookie中存储身份验证密钥的最佳安全实践是什么?

Php 在会话cookie中存储身份验证密钥的最佳安全实践是什么?,php,web-services,api,security,slim,Php,Web Services,Api,Security,Slim,我有一个RESTfulWeb服务API,它执行以下身份验证操作 /使用用户名和密码登录会生成并返回一个身份验证密钥(API密钥,如果您愿意)作为JSON 将来的请求应该在头中包含身份验证密钥,以便进行身份验证或再次登录以获取身份验证密钥 现在,我计划使用java脚本和RESTfulWebServiceAPI创建一个网站前端。问题是,为android或iphone应用程序生成登录访问密钥是可行的,因为用户第一次登录时,应用程序将缓存身份验证密钥以备将来会话使用。现在我如何使用网站前端来实现这一点?

我有一个RESTfulWeb服务API,它执行以下身份验证操作

/使用用户名和密码登录会生成并返回一个身份验证密钥(API密钥,如果您愿意)作为JSON

将来的请求应该在头中包含身份验证密钥,以便进行身份验证或再次登录以获取身份验证密钥


现在,我计划使用java脚本和RESTfulWebServiceAPI创建一个网站前端。问题是,为android或iphone应用程序生成登录访问密钥是可行的,因为用户第一次登录时,应用程序将缓存身份验证密钥以备将来会话使用。现在我如何使用网站前端来实现这一点?我应该将身份验证密钥存储在cookie中吗?如果是,是什么阻止另一个用户访问我的站点发送缓存的cookie?是否有更好的方法来解决此身份验证密钥问题?请指出此设计中的任何安全漏洞

你有两个选择。您可以轻松地旋转密钥,这样当您认为密钥被滥用时,您可以生成一个新密钥(这就是流行的客户端API所做的,例如mapbox)。或者在服务器与API对话时在服务器上添加密钥,那么客户端将看不到密钥。公司通常如何知道API密钥滥用?每次使用api时计数只是浪费指令,如果我将此计数存储在数据库中,那就是浪费空间。但是,我可以写入磁盘。。定期清理磁盘,但这将重置计数。第三个选项是使用用户的现有会话标识符,以及API端点上的中间件,检查请求是否来自浏览器。这确实意味着对API的每个请求都要通过该检查,但您可以将会话转换为“auth key”服务器端。从这里开始,API的使用就和用户的会话一样安全。