将“HttpOnly”属性添加到所有会话 cookie
Posted
技术标签:
【中文标题】将“HttpOnly”属性添加到所有会话 cookie【英文标题】:Add the 'HttpOnly' attribute to all session cookies 【发布时间】:2012-03-18 15:41:22 【问题描述】:我在审核我的网站时收到以下错误。我使用 jsp、servlet、java 类开发了我的网站。
会话 Cookie 中缺少 HttpOnly 属性
安全风险
可能会窃取或操纵客户会话和 cookie,这可能是 用于冒充合法用户,允许黑客查看或更改用户记录, 并以该用户身份执行交易
原因:
Web 应用程序在没有 HttpOnly 的情况下设置会话 cookie 属性
修复任务:
为所有会话 cookie 添加 'HttpOnly' 属性
单击提交按钮时,我将 java 安全令牌作为隐藏参数传递。如何在该令牌中添加此 HttpOnly 属性?
【问题讨论】:
【参考方案1】:HttpOnly 属性设置在Cookies 上,这些属性(通常)从服务器传递到客户端,而不是从客户端传递到服务器。 HttpOnly 不是您可以在表单或表单参数上设置的属性。这里客户端是浏览器,服务器是运行 Java 应用程序的 Java EE 服务器。
Cookies 通常由服务器创建,传递给浏览器,然后传回。现在可以使用 javascript 创建和操作 Cookie,这很有帮助,但也可能是一个安全漏洞。所以an HttpOnly Cookie is only accessible by the server,或者换句话说,它不能从客户端 JavaScript 访问,它可以保护您的站点免受某些形式的 XSS 攻击。因此,浏览器将存储并返回一个 HttpOnly Cookie,但它不会更改它或允许您在客户端上创建它;必须在服务器上创建一个 HttpOnly Cookie。
如果您使用 JSP,您的服务器可能会自动创建一个 Cookie 来为您管理会话;这是您需要设置 HttpOnly 属性的 cookie。 The method to set HttpOnly on your SESSIONID Cooke will be container specific.
【讨论】:
好的,但是这个服务器和客户端是什么?你能详细说明一下吗 @tom - 进一步扩展了答案。可能值得关注答案中的链接以获取更多详细信息。 是的,谢谢,还有一个疑问:如果我要在 tomcat 中进行任何修改,那么我是否也必须在客户端对 httpOnly 属性进行任何修改? 不,HttpOnly 选项仅由服务器控制。【参考方案2】:您能否在会话 cookie 中设置“HttpOnly”属性?
我在 https://www.owasp.org/index.php/HttpOnly 上找到了执行此操作的代码
<session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
<session-config>
【讨论】:
以上是关于将“HttpOnly”属性添加到所有会话 cookie的主要内容,如果未能解决你的问题,请参考以下文章
安全修复之Web——会话Cookie中缺少HttpOnly属性