HttpOnly是怎么回事?

HttpOnly是怎么回事?最近配合公司安全团队开展一些工作,安全团队建议,内部系统(用户端系统有跨域需求,其他方式解决更合适)对接SSO建议开启HttpOnly。HttpOnly?没听说过,赶紧百度一下。一、什么是HttpOnly根据JordanWiens一篇博客《Nocookieforyou!》记载,HttpO

大家好,欢迎来到IT知识分享网。

最近配合公司安全团队开展一些工作,安全团队建议,内部系统(用户端系统有跨域需求,其他方式解决更合适)对接SSO建议开启HttpOnly。HttpOnly?没听说过,赶紧百度一下。

一、什么是HttpOnly

根据Jordan Wiens一篇博客《No cookie for you!》记载,HttpOnly cookie最初是由Microsoft Internet Explorer开发人员于2002年在Internet Explorer 6 SP1的版本中实现。

微软开发者网站介绍,HttpOnly是Set-Cookie HTTP响应头中包含的附加标志。生成cookie时使用HttpOnly标志有助于降低客户端脚本访问受保护cookie的风险(如果浏览器支持它)。

以下示例显示了HTTP响应标头中使用的语法 

HttpOnly是怎么回事?

如果HTTP响应头中包含HttpOnly标志,只要浏览器支持HttpOnly标志,客户端脚本就无法访问cookie。因此,即使存在跨站点脚本(XSS)缺陷,且用户意外访问利用此漏洞的链接,浏览器也不会向第三方透露cookie。

如果浏览器不支持HttpOnly并且网站尝试设置HttpOnly cookie,浏览器会忽略HttpOnly标志,从而创建一个传统的,脚本可访问的cookie。

二、使用HttpOnly减轻最常见的XSS攻击

根据微软Secure Windows Initiative小组的高级安全项目经理Michael Howard的说法,大多数XSS攻击的目的都是盗窃cookie。服务端可以通过在它创建的cookie上设置HttpOnly标志来缓解这个问题,指出不应在客户端上访问cookie。

客户端脚本代码尝试读取包含HttpOnly标志的cookie,如果浏览器支持HttpOnly,则返回一个空字符串作为结果。这样能够阻止恶意代码(通常是XSS攻击)将cookie数据发到攻击者网站。

三、通过Java设置HttpOnly

自Java Enterprise Edition 6(JavaEE 6)采用Java Servlet 3.0技术以来,编程上很容易在cookie上设置HttpOnly标志。

事实上,Cookie有两个方法setHttpOnly和isHttpOnly,cookie(JSESSIONID)也有。 

HttpOnly是怎么回事?

此外,JavaEE 6开始,也可以通过配置文件WEB-INF/web.xml来配置HttpOnly

HttpOnly是怎么回事?

对于JavaEE 6之前的Java Enterprise Edition版本,常见的解决方法是使用显式附加HttpOnly标志的会话cookie值覆盖SET-COOKIE HTTP响应头

HttpOnly是怎么回事?

粗暴覆盖并不好,因为JSESSIONID可能已经设置了其他标志。更好的解决方法是处理先前设置的标志。实际上,SecurityWrapperResponse 的addCookie方法可以解决这个问题。我们可以编写一个servlet过滤器 

HttpOnly是怎么回事?

 

一些实现JavaEE 5的Web应用程序服务器和实现Java Servlet 2.5(JavaEE 5的一部分)的servlet容器也允许创建HttpOnly会话cookie

例如Tomcat 6可以在context.xml文件中进行如下设置 

HttpOnly是怎么回事?

四、用好Web应用防火墙

如果代码更改不可行或成本太高,可以使用Web应用程序防火墙将HttpOnly添加到会话cookie

Mod_security – using SecRule and Header directives

ESAPI WAF – using add-http-only-flag directive

支持HttpOnly的主流浏览器有哪些呢?谷歌了一下,常见的浏览器都支持。 

HttpOnly是怎么回事?

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31032.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信