首页 > 其他分享 >关于如何处理httpOnly的问题?

关于如何处理httpOnly的问题?

时间:2023-05-25 09:11:59浏览次数:30  
标签:XSS 浏览器 处理 cookie 关于 Cookie httpOnly HttpOnly 客户端

写这篇的目的是,今天在重新学习javascript时发现了HttpOnly这个标签,所以专门的mark了下。


谁在什么时候发明了HttpOnly

2002年微软为ie6的sp1创造了HttpOnly


什么是HttpOnly

HttpOnly是包含在http返回头Set-Cookie里面的一个附加的flag,所以它是后端服务器对cookie设置的一个附加的属性,在生成cookie时使用HttpOnly标志有助于减轻客户端脚本访问受保护cookie的风险(如果浏览器支持的话)

下面的例子展示了如何设置Set-Cookie 返回头的语法

Set-Cookie: <name>=<value>[; <Max-Age>=<age>]

[; expires=<date>][; domain=<domain_name>]

[; path=<some_path>][; secure][; HttpOnly]

如果HTTP响应标头中包含HttpOnly标志(可选),客户端脚本将无法访问cookie(如果浏览器支持该标志的话)。因此即使客户端存在跨站点脚本(XSS)漏洞,浏览器也不会将Cookie透露给第三方。

如果浏览器不支持HttpOnly,并且后端服务器尝试设置HttpOnly cookie,浏览器也会忽略HttpOnly标志,从而创建传统的,脚本可访问的cookie。那么该cookie(通常是会话cookie)容易受到XSS攻击


使用HttpOnly缓解最常见的XSS攻击

大多数XSS攻击都是针对会话cookie的盗窃。后端服务器可以通过在其创建的cookie上设置HttpOnly标志来帮助缓解此问题,这表明该cookie在客户端上不可访问。

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


java服务器设置HttpOnly

自从采用Java Servlet 3.0之上的容器,很容易在cookie上设置HttpOnly标志。实际上,setHttpOnly和isHttpOnly方法可在Cookie接口中使用,如下

Cookie cookie = getMyCookie("myCookieName");

cookie.setHttpOnly(true);

在WEB-INF/web.xml的设置如下

<session-config>

<cookie-config>

  <http-only>true</http-only>

</cookie-config>

</session-config>

标签:XSS,浏览器,处理,cookie,关于,Cookie,httpOnly,HttpOnly,客户端
From: https://www.cnblogs.com/zzalovelyq/p/17430157.html

相关文章

  • 【ElasticSearch】关于es跨域的问题
    本文目录一、使用es的head插件二、其他说明一、使用es的head插件在使用es的head插件时,默认的9100,需要访问es的默认端口9200时,会出现跨域问题,此时只需要修改一下es的配置文件即可。在elasticsearch.yml中添加开启跨域的配置:http.cors.enabled:truehttp.cors.allow-origin:"*"说明......
  • webpack-loader打包处理less文件
    打包处理less文件运行npmiless-loaderless-D命令在webpack.config.js的module->rules数组中,添加loader规则如下:module:{rules:[//定义了不同模块对应的loader{test:/\.css$/,use:['style-loader','css-loader']},//处理.less文......
  • 关于汽车电子NVM的笔记
    一、什么是NVMNVM是英文“Non-VolatileMemory”的缩写,中文翻译为“非易失性存储器”。它是指一种能够在断电情况下依旧保留数据的存储器件。NVM用于存储一些不需要频繁更改的数据,例如汽车电子控制单元(ECU)中的程序代码、校准数据、配置参数以及历史故障码等。二、为什么使用NVM......
  • 关于C语言习题二
    1、5*5数组中找出一行中最大的数,同时也是一列中最大的数。#include<stdio.h>#include<stdlib.h>#include<time.h>#defineN5intmain(){srand((unsigned)time(NULL));inti,j;inta[5][5];introw;intcol;intmax;intfound=0;do{......
  • mybatis关于自定义映射的使用方法
    在MyBatis中,可以通过SQL映射文件来自定义映射,即将一个查询结果映射成一个Java对象。在映射中,我们可以控制如何从查询结果中提取数据,并将其映射到Java对象的属性中。以下是一些常用的自定义映射方式:resultMap:使用resultMap元素来定义映射规则,可以精确地将查询结果映......
  • 如何使用Map处理Dom节点
    本文浅析一下为什么Map(和WeakMap)在处理大量DOM节点时特别有用。我们在JavaScript中使用了很多普通的、古老的对象来存储键/值数据,它们处理的非常出色:constperson={firstName:'Alex',lastName:'MacArthur',isACommunist:false};但是,当你开始处理较大的......
  • 【计算机视觉1】--图形预处理(色彩空间转换)
    图像预处理计算机视觉图像预处理是指在进行图像处理前对图像进行一系列的处理和转换,以便更好地进行后续的图像处理和分析。其主要目的是使得图像能够被计算机识别、处理和分析,同时保留尽可能多的有用信息。图像预处理框架图今天主要讲下色彩空间转换,其他的在图像增强算法和锐化算法......
  • 关于物联网相关的一些知识
    元件 国外的有树莓派,Arduino,还有为Mcu支持的Micropython国内的有香橙派,听说生态很不好价格500左右micropython开发板为Pyborad价格在100左右开发语言树莓派支持python,可以烧录很多系统,如Android,linux等 Aduino支持C++,板子价格中等Micropython是可以使用microp......
  • 实验4 函数与异常处理编程
    print(sum)sum=42print(sum)definc(n):sum=n+1print(sum)returnsumsum=inc(7)+inc(7)print(sum)四处sum作用域不同。第一个是内置函数名称,第二个是赋值名称,第三个是局部变量,第四个是全局变量list1=[1,9,8,4]print(sorted(list1))print......
  • 前端解析markdown处理表格样式
    后端返回markdown格式,前端解析,使用的是marked.js安装npminstallmarked--save另外我也给代码做了高亮npminstallhighlight.js--savemain.jsimporthljsfrom'highlight.js';//封装成一个指令,highlight是指令的名称Vue.directive('highlight',(el)=>{letbl......