- A+
所属分类:Web前端
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属性;