HttpOnly的笔记

简介: `HttpOnly`是Cookie的一个属性,用于防止JavaScript访问Cookie值,增强安全性。服务器通过`Set-Cookie`设置,如`Set-Cookie: name=value; HttpOnly`。在Tomcat 7.0.x及以上版本,可在`web.xml`配置`<http-only>true</http-only>`。检查HttpOnly是否生效,可使用Chrome调试器查看Cookies,HttpOnly列有对勾表示生效。

HttpOnly是什么

简单的说:

  • HttpOnly是Cookie的属性;
  • Web服务器通过为Cookie设置这个属性,告诉浏览器应当避免页面端的脚本访问对应Cookie的值,保证被Cookie承载的敏感信息不被恶意读取;
  • Web服务器可以保存一些用户的敏感数据到Cookie中,实现比如SSO的功能;
  • 当然是否安全,光靠Web服务器设置HttpOnly属性是没有用的,浏览器需要按要求支持这个属性,否则仍然存在安全问题。

为Cookie设置HttpOnly属性的语法如下。

Set-Cookie: <name>=<value>[; <name>=<value>]
[; expires=<date>][; domain=<domain_name>]
[; path=<some_path>][; secure][; HttpOnly]

如何设置

对于Tomcat 7.0.x以上的版本,可以在应用的web.xml文件中增加如下配置。

<session-config>
  <cookie-config>
    <http-only>true</http-only>
    <secure>true</secure> <!-- 启用HTTPS后,建议配置这行,仅在安全通道时传输Cookie,提升安全性 -->
  </cookie-config>
<session-config>

查阅Apache Tomcat官方Cookie类的文档,可以发现从7.0.x版本可以通过Cookie类对象的API来设置httpOnly属性。

/**
 * Sets the flag that controls if this cookie will be hidden from scripts on the client side.
 */ 
setHttpOnly(boolean httpOnly)

如何判断HttpOnly是否生效

打开Chrome调试器的Resources面板,在左边选择Cookies,这时在右边可以看到Chrome缓存的cookie数据。

注意观察HTTP、Secure列:

  • 如果HTTP列有对勾,说明对应行的cookie设置了HttpOnly属性;
  • 如果Secure列有对勾,说明对应行的cookie设置了secure属性;
相关文章
|
5月前
|
存储 安全 JavaScript
|
7月前
|
存储 安全 C#
详细解读Cookie学习笔记
详细解读Cookie学习笔记
59 3
|
8月前
|
存储 搜索推荐 安全
【Web开发】cookie和session
【Web开发】cookie和session
|
8月前
|
存储 安全 容器
面试题:什么是cookie和session?
面试题:什么是cookie和session?
44 0
|
JavaScript 前端开发
cookie设置httponly是干什么的?底层原理是什么?
cookie设置httponly是干什么的?底层原理是什么?
1759 0
|
存储 前端开发 Java
Cookie | 学习笔记
快速学习Cookie.
117 0
Cookie | 学习笔记
|
存储 JavaScript 前端开发
一文弄懂session&cookie
先聊一聊session和cookie的起源
146 0
一文弄懂session&cookie
|
Web App开发 存储 缓存
你真的知道Cookie?SameSite,Secure,Httponly
这两天(已经是一个多月前了) SF 上面很多 cookie 的问题,然后还有个 cookie 相关的付费问答。 所以咱们今天来这么一节,废话多说点,先说说大体问题方向。 跨域如何携带 cookie chrome 80 版本加强隐私。SameSite=Lax 为默认值,禁止了一部分场景携带 cookie。
628 0
你真的知道Cookie?SameSite,Secure,Httponly
|
Java 开发者
Cookie 入门|学习笔记
快速学习 Cookie 入门
122 0
|
JavaScript 前端开发 Java
新手应该了解的Cookie知识!
  新手应该了解的Cookie知识!   一、Cookie的出现   浏览器和服务器之间的通信少不了HTTP协议,但是因为HTTP协议是无状态的,所以服务器并不知道上一次浏览器做了什么样的操作,这样严重阻碍了交互式Web应用程序的实现。
4464 1