基于cookie的会话管理的改进

时间:2015-11-09 16:15:20

标签: cookies session-cookies

"服务器运营商可能不会使用cookie进行授权  希望通过对待来考虑纠缠指定和授权  URL作为功能。而不是将秘密存储在cookie中  方法在URL中存储秘密,需要远程实体  提供秘密本身。虽然这种方法不是灵丹妙药,  明智地应用这些原则可以带来更强大的功能  。安全" A.巴特 https://tools.ietf.org/html/rfc6265

在网址中存储机密是什么意思?在实践中如何做到这一点?

1 个答案:

答案 0 :(得分:1)

我认为适合此描述的一种技术是要求客户请求URLs that are signed with HMAC。亚马逊网络服务为某些操作提供了这种技术,我也看到它也在网络公司的内部API中实现。可以使用此技术或类似技术对URL服务器端进行签名,并将其安全地传递到嵌入HTML的客户端(通过HTTPS)或针对API的XMLHttpRequests响应。

作为会话cookie的替代方案,我不确定这种技术会提供什么优势。但是,在某些情况下,解决问题很方便或通常是解决问题的最佳方法。例如,我在以下时间使用了类似的技术:

跨域

您需要让浏览器访问另一个域中的网址,因此Cookie无效,并且您可以签署URL服务器端以提供访问权限,重定向或足够长的过期时间,浏览器有时间加载URL。

示例 :从S3下载文件。从CloudFront逐步播放视频。

封闭源限制

除了URL之外,您无法控制浏览器或其他客户端发送的内容,因为您正在使用某种类型的闭源插件,并且无法更改其行为。再次签署URL服务器端,以便客户端必须做的就是获取URL。

示例 :通过WEBVTT将视频字幕和/或精灵文件加载到闭源Flash视频播放器中。当您需要确保在传输过程中无法更改有效负载时,发送有效负载以及联合单点登录回调URL。

无凭证的任务工作者

您正在向除浏览器之外的其他内容发送网址,并且需要访问该网址上的资源,并且您不希望为其提供实际凭据

示例 :您正在运行队列使用者或基于任务的工作守护程序或AWS Lambda函数,它需要下载文件,处理它,并发送电子邮件。只需预先签署它将使用的所有URL,并使用合理的到期日期,以便它可以执行所需的所有请求,而无需任何其他凭据。