JAVA年度安全 第四周 SESSION COOKIE HTTPONLY 标识

时间:2022-01-28 01:41:43

http://www.jtmelton.com/2012/01/25/year-of-security-for-java-week-4-session-cookie-httponly-flag/

What is it and why do I care?

Session cookies (或者包含JSSESSIONIDcookie)是指用来管理web应用的session会话的cookies.这些cookie中保存特定使用者的session ID标识,而且相同的session ID以及session生命周期内相关的数据也在服务器端保存。在web应用中最常用的session管理方式是通过每次请求的时候将cookies传送到服务器端来进行session识别。

HttpOnly标识是一个可选的、避免利用XSSCross-Site Scripting)来获取session cookie的标识。XSS攻击最常见一个的目标是通过获取的session cookie来劫持受害者的session;使用HttpOnly标识是一种很有用的保护机制。

JAVA年度安全 第四周 SESSION COOKIE HTTPONLY 标识

what should I do about it ?

解决方案很简单。只需要在session cookie上添加HttpOnly标识就行了(最好是所有的cookie)。

下面是一个没有添加HttpOnly标识的session cookie

Cookie: jsessionid=AS348AF929FK219CKA9FK3B79870H;

添加HttpOnlyFlag标识之后:

Cookie: jsessionid=AS348AF929FK219CKA9FK3B79870H; HttpOnly;

如果你看过上周的文章,添加了secureHttpOnly标识的cookie

Cookie: jsessionid=AS348AF929FK219CKA9FK3B79870H; HttpOnly; secure;

很简单。你可以人工设置这些参数,如果你在Servlet3或者更新的环境中开发,只需要在web.xml简单的配置就能实现这种效果。你要在web.xml中添加如下片段:

<session-config>

  <cookie-config>

    <http-only>true</http-only>

  </cookie-config>

</session-config>

而且如果使用了secure标识,配置应该如下

<session-config>

  <cookie-config>

    <http-only>true</http-only>

    <secure>true</secure>

  </cookie-config>

</session-config>

如上所述,解决这个问题很简单。每个人都应该解决这个问题。

References

http://blog.mozilla.com/webappsec/2011/03/31/enabling-browser-security-in-web-applications/
http://michael-coates.blogspot.com/2011/03/enabling-browser-security-in-web.html
https://www.owasp.org/index.php/HttpOnly