【问题标题】:Add the 'HttpOnly' attribute to all session cookies将“HttpOnly”属性添加到所有会话 cookie
【发布时间】:2023-04-01 21:24:02
【问题描述】:

我在审核我的网站时收到以下错误。我使用 jsp、servlet、java 类开发了我的网站。

会话 Cookie 中缺少 HttpOnly 属性

安全风险

可能会窃取或操纵客户会话和 cookie,这可能是 用于冒充合法用户,允许黑客查看或更改用户记录, 并以该用户身份执行交易

原因:

Web 应用程序在没有 HttpOnly 的情况下设置会话 cookie 属性

修复任务:

为所有会话 cookie 添加 'HttpOnly' 属性

单击提交按钮时,我将 java 安全令牌作为隐藏参数传递。如何在该令牌中添加此 HttpOnly 属性?

【问题讨论】:

    标签: java security http session


    【解决方案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>
    

    【讨论】:

      猜你喜欢
      • 2013-07-19
      • 2012-04-07
      • 2020-03-31
      • 2017-02-04
      • 2023-03-12
      • 1970-01-01
      • 2011-12-29
      • 2012-01-11
      • 2019-02-12
      相关资源
      最近更新 更多