Security 无cookie的安全会话管理
几个月前,我参观了一个安全研讨会,我们讨论了使用cookie进行会话管理时的一些安全问题。 有人告诉我,cookies最初不是为处理会话而设计的。Security 无cookie的安全会话管理,security,cookies,session-cookies,Security,Cookies,Session Cookies,几个月前,我参观了一个安全研讨会,我们讨论了使用cookie进行会话管理时的一些安全问题。 有人告诉我,cookies最初不是为处理会话而设计的。 但是应该怎么做呢?Cookies仍然是会话管理的最佳方式。请注意cookies中的限制。为了获得更好的结果,请使用无法通过http传输的内容,仅使用https。例如,如果页面上存在对不安全图像的引用,则很难意外泄漏这些内容。安全的方法是生成一个加密随机128位值(即CSPRNG生成的随机值),然后将其作为POST数据传递到每个页面 e、 g。 这不
但是应该怎么做呢?Cookies仍然是会话管理的最佳方式。请注意cookies中的限制。为了获得更好的结果,请使用无法通过http传输的内容,仅使用https。例如,如果页面上存在对不安全图像的引用,则很难意外泄漏这些内容。安全的方法是生成一个加密随机128位值(即CSPRNG生成的随机值),然后将其作为POST数据传递到每个页面 e、 g。 这不仅会使会话标识符在用户屏幕上可见,还会被referer头泄漏,并默认记录在浏览器历史记录、代理和服务器日志中。默认情况下很少记录POST数据
一些银行使用此方法来确保用户在其会话期间只使用一条活动路径-会话标识符可以轻松地旋转,这样,如果用户使用不同的路径,则其标识符不匹配,并注销。从安全的角度来看,当您有一个必须按设定顺序执行的多步骤流程时,这非常有用。当用户选择与开发人员期望不同的路径时,可能会出现一些业务逻辑漏洞。谢谢您的提示。但是,如果没有cookie,会话管理怎么做呢?您可以在URL中放置会话密钥。然而,这通常被认为是非常糟糕的做法,并且存在众所周知的安全问题。另一个非常不同的选择是在客户端执行所有操作,例如使用Javascript,并保持服务器无状态,例如使用RESTAPI。的优点是服务器更简单,并且更容易确保其安全。另一方面,它意味着用Javascript编程,这对于无bug代码来说不是一个好的选择。
<form method="post" action="/globalHandler">
<input type="hidden" name="sessionId" value="<sessiontoken>" />
<input type="hidden" name="page" value="accountDetails" />
</form>
https://example.com?sessionId=1234...