最近配合公司安全团队开展一些工作,安全团队建议,内部系统(用户端系统有跨域需求,其他方式解决更合适)对接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响应标头中使用的语法

如果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)也有。

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

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

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

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

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

四、用好Web应用防火墙

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

Mod_security - using SecRule and Header directives

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

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

HttpOnly是怎么回事?相关推荐

  1. 原来AGILE就是这么一回事啊!

    仅仅还在几年前, XP 还被认为是方法异教, FDD 属于黑客程序方法.如今,敏捷俨然已经成为主流学说,敏捷方法成为人们学习和讨论的热点.敏捷方法的应用也更加广泛,以至于不少外包项目都要求采用某种敏 ...

  2. mysql8.0登录不上去怎么回事_搞笑GIF:女朋友非要给我秀一手厨艺,不过这房子是怎么回事!...

    1.来,跟着我的节拍,摇起来! 2.前面的我还能接受,不过这后面的就有点太看得起我了吧! 3.宝贝,不要哭了,我永远爱你,不会离开你的! 4.单身久了,现在看一头猪都感觉眉清目秀的! 5.现在我好奇的 ...

  3. 项目部署时网关怎么回事_使用Kubernetes部署聊天网关(或技术按预期运行时)...

    项目部署时网关怎么回事 by Richard Li 理查德·李(Richard Li) 使用Kubernetes部署聊天网关(或技术按预期运行时) (Using Kubernetes to deplo ...

  4. php执行mysql insert,当执行mysql insert 时插入两条是咋回事

    当执行mysql insert 时插入两条是怎么回事? 本帖最后由 Eason_____________ 于 2013-07-25 11:25:44 编辑 //做了一个手机上传图片到服务器的功能.但是 ...

  5. 50个云终端只需一台服务器是怎么一回事

    看到这个标题也许有人会说50个云终端只需要一台服务器这应该是不可能的吧,即使是真的那这个服务器的配置和价格应该也要非常高的吧.但是如果有人和你说50个云终端只需要一台中等配置和价格的服务器就可以的呢. ...

  6. 怎么判断膝关节错位_路走多了,膝盖疼是怎么回事?

    现在的人,都有很强烈的养生意识,尤其是中年人,知道身体的重要性,所以会通过各种方式来提高体质,运动就是最常见的一种方式. 不少人会采用最简单的运动方式,就是走路,之前朋友圈一直都在流行走路刷步数,不少 ...

  7. 使用HttpOnly提升Cookie安全性

    在介绍HttpOnly之前,我想跟大家聊聊Cookie及XSS. 随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最新实例化 ...

  8. 数学知识-- 信赖域(Trust Region)算法是怎么一回事

    信赖域(Trust Region)算法是怎么一回事 转载自: https://www.codelast.com/原创信赖域trust-region算法是怎么一回事/ 如果你关心最优化(Optimiza ...

  9. 无冬连接不上账号服务器,电脑中玩无冬online掉线怎么回事_电脑中玩无冬online游戏总是掉线如何修复...

    无冬online是一款大型网络游戏,很多玩家都很喜欢在电脑中安装玩耍,在游戏过程中,想必很多用户经常会遇到这样一个问题,就是在电脑中玩无冬online游戏的时候,经常会出现掉线的情况,导致每次游戏都会 ...

最新文章

  1. sql语句的简单记录
  2. iOS 15.2计划上线“数字遗产”!网友:管的真远,身后事都替我操心?
  3. 大林算法计算机控制实验报告,大林算法
  4. Python中的 // 与 / 的区别
  5. 应用指定显示到副屏_LED灯杆屏广泛应用逐渐成为智慧城市信息化的重要窗口
  6. Windows下使用TeamViewer连接远程服务器,以及解决“远程桌面关闭后TeamViewer不能连接”的问题
  7. Tensorflow CIFAR10 (二分类)
  8. 思科ASA防火墙升级为云端防火墙
  9. snmpwalk工具使用
  10. 报表开发工具FastReport开源代码2020首发更新!邀您免费下载
  11. C语言中char和char *a[]和char (*a)[]
  12. 【CloudShell】阿里云壳EDR卸载指南
  13. 大数据智能营销系统的作用
  14. 计算机未来的发展250字,电脑迷250字作文
  15. 1月第1周榜单丨B站UP主排行榜(飞瓜数据B站)发布!
  16. UrlRewriter.NET 与 UrlRewrittingNet.UrlRewriter比较
  17. Verilog左移位
  18. C/S模式和B/S模式
  19. 流媒体服务器(1)—— 一个非常好用云转码流媒体平台
  20. Nexus(1):Nexus的安装与配置

热门文章

  1. LT7688 Uart TFT 串口屏控制芯片
  2. 企业级Nginx负载均衡与keepalived高可用实战课-老男孩-专题视频课程
  3. [OpenSceneGraph入门指导]1.6 OpenSceneGraph 概览
  4. 视频教程-2021软考--系统架构设计师--综合知识精讲视频培训课程-软考
  5. 谈谈对浏览器兼容性问题的理解
  6. 新版极域密码破解,无逆向
  7. fmr 收音机源代码相关分
  8. 听说朋友九年前的黄金解套了
  9. 向量和矩阵的点乘和叉乘
  10. java实现字符串转换为多个json对象