HttpOnly是什么

简单的说:

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

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

Set-Cookie: =[; =][; expires=][; domain=][; path=][; secure][; HttpOnly]

如何设置

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

truetrue 

查阅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属性;

资料

  • HttpOnly
  • Mitigating Cross-site Scripting With HTTP-only Cookies
  • 利用HTTP-only Cookie缓解XSS之痛
  • 如何为cookie设置HttpOnly
  • 某些浏览器中因cookie设置HttpOnly标志引起的安全问题
  • HttpCookie.HttpOnly VS Cookie.HttpOnly?(downmoon原创)

本文来自博客园,作者:jackieathome,转载请注明原文链接:https://www.cnblogs.com/jackieathome/p/17936473.html