解析 “Cookies Not Marked as HttpOnly” 漏洞

一、引言

在 Web 应用安全领域,Cookies 相关的漏洞一直是备受关注的问题。其中,“Cookies Not Marked as HttpOnly” 漏洞可能会对用户数据安全和网站的正常运行造成潜在威胁。本文将详细介绍这个漏洞,包括其原理、影响、检测方法以及修复措施。

二、漏洞概述

在对某网站进行安全扫描时,发现了 “Cookies Not Marked as HttpOnly” 漏洞。这个漏洞意味着网站设置的某些 Cookies 没有启用 HttpOnly 属性。

HttpOnly 是一个特殊的 Cookies 属性。当一个 Cookie 被设置为 HttpOnly 时,浏览器会限制客户端脚本(如 JavaScript)对该 Cookie 的访问。这一属性对于保护用户的敏感信息至关重要,特别是在涉及用户会话管理的 Cookies 中。正常情况下,服务器通过在响应头中设置 “Set - Cookie” 指令来创建和配置 Cookies,包括设置 HttpOnly 属性。

三、漏洞详情

(一)受影响的 Cookies 信息

在目标网站及其多个子页面中,发现了大量未设置 HttpOnly 标志的 Cookies。

例如:

  • 在目标网站首页:
    • Set - Cookie: SERVERID=ee87ab629a2331414ae03dadb21e80a1|1730944548|1730944548;Path=/
    • Set - Cookie: SERVERCORSID=ee87ab629a2331414ae03dadb21e80a1|1730944548|1730944548;Path=/;SameSite=None;Secure
  • 在目标网站的登录相关页面:
    • Set - Cookie: custoken=a3c2a0b1 - 2fb0 - 45b8 - bee0 - d6183fae5da9; path=/
    • Set - Cookie: SERVERID=ee87ab629a2331414ae03dadb21e80a1|1730944614|1730944548;Path=/
    • Set - Cookie: SERVERCORSID=ee87ab629a2331414ae03dadb21e80a1|1730944614|1730944548;Path=/;SameSite=None;Secure

这些 Cookies 涉及到不同的功能和页面,但由于缺少 HttpOnly 标志,都存在被客户端脚本非法访问的风险。

(二)漏洞发现过程

通过对网站的 HTTP 请求和响应进行分析发现了此漏洞。当浏览器向服务器发送(已脱敏)请求(如 GET 请求):

GET / HTTP/1.1
Referer: [目标网站域名]
Accept: text/html,application/xhtml + xml,application/xml;q = 0.9,*/*;q = 0.8
Accept - Encoding: gzip,deflate,br
User - Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36
Host: [目标网站域名]
Connection: Keep - alive

服务器返回的响应中包含了设置 Cookies 的信息,但部分 Cookies 没有 HttpOnly 标志:

HTTP/1.1 302 Found
Date: Thu, 07 Nov 2024 01:55:48 GMT
Content - Type: text/html; charset=utf - 8
Content - Length: 132
Connection: keep - alive
Set - Cookie: acw_tc=1a96c8163df254695e645157f6d11ade0160f2e773eb4711e809356575daf82b;path=/;HttpOnly;Max - Age=1800
Cache - Control: private
Location: [目标网站内具体页面路径]
Set - Cookie: ASP.NET_SessionId=a3z05k4fd1x5egn3yl5efgyg; path=/; HttpOnly; SameSite=Lax
X - AspNet - Version: 4.0.30319
X - Powered - By: ASP.NET
Set - Cookie: SERVERID=ee87ab629a2331414ae03dadb21e80a1|1730944548|1730944548;Path=/
Set - Cookie: SERVERCORSID=ee87ab629a2331414ae03dadb21e80a1|1730944548|1730944548;Path=/;SameSite=None;Secure
<html><head><title>Object moved</title></head><body>
<h2>Object moved to <a href="[目标网站内具体页面路径]">here</a>.</h2>
</body></html>

四、漏洞影响

(一)安全风险

  1. 易受跨站脚本攻击(XSS)
    由于 Cookies 可被客户端脚本访问,如果网站存在 XSS 漏洞,攻击者就可以利用恶意脚本获取这些 Cookies。例如,攻击者可以获取用户的会话 Cookies,然后冒用用户身份进行非法操作,如访问用户的个人信息、执行未授权的交易等。
  2. 用户数据泄露
    Cookies 中可能包含用户的敏感信息,如登录凭证、个性化设置等。没有 HttpOnly 保护,这些信息可能被窃取,导致用户隐私泄露。

(二)对网站声誉的影响

一旦发生因该漏洞导致的安全事件,用户可能会对网站的安全性产生质疑,从而降低对网站的信任度。这可能会导致用户流失,对网站的商业运营和声誉造成负面影响。

五、漏洞评分与级别

综合考虑该漏洞的可利用性、影响范围和修复难度,这个 “Cookies Not Marked as HttpOnly” 漏洞可以被评为中高风险级别。从 CVSS 评分角度来看,大概在 3 - 7 分(满分 10 分)。其可利用性较高,因为在存在 XSS 漏洞的情况下很容易被利用;影响范围广,涉及网站的多个关键页面;但修复难度相对较低,只需为相关 Cookies 设置 HttpOnly 标志即可。

六、修复建议

为了修复这个漏洞,对于所有涉及用户敏感信息或用于会话管理的 Cookies,都应该设置 HttpOnly 标志。以下是在不同技术环境中的设置方法示例:

(一)Java(Servlet)

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
// 在Servlet的doGet或doPost方法中
public void doGet(HttpServletRequest request, HttpServletResponse response) {Cookie cookie = new Cookie("cookieName", "cookieValue");// 设置HttpOnly标志为truecookie.setHttpOnly(true);// 设置其他属性,如路径、有效期等cookie.setPath("/");// 将Cookie添加到响应中response.addCookie(cookie);
}

(二)Python(Flask)

from flask import Flask, make_response
app = Flask(__name__)
@app.route('/')
def set_cookie():resp = make_response("Cookie set")resp.set_cookie('cookieName', 'cookieValue', httponly=True)return resp

(三)JavaScript(Node.js + Express)

const express = require('express');
const app = express();
app.get('/', (req, res) => {res.cookie('cookieName', 'cookieValue', {httpOnly: true});res.send('Cookie set');
});
app.listen(3000, () => {console.log('Server running on port 3000');
});

(四)ASP.NET(C#)

using System.Web;
// 在一个ASPX页面的代码后置文件(.cs)或者一个Web API控制器方法中
public void SetCookie()
{HttpCookie cookie = new HttpCookie("cookieName", "cookieValue");cookie.HttpOnly = true;// 设置其他属性,如路径、有效期等cookie.Path = "/";// 将Cookie添加到响应中HttpContext.Current.Response.Cookies.Add(cookie);
}

七、总结

“Cookies Not Marked as HttpOnly” 漏洞是一个需要重视的 Web 安全问题。通过了解其原理、影响和修复方法,开发人员可以采取有效的措施来保护用户数据安全和目标网站的正常运行,减少因 Cookies 安全问题带来的潜在风险。希望本文能为大家在处理这类漏洞时提供有益的参考。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8632.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

基于MATLAB DCT域图像水印技术

1数字水印技术的概念和特点 数字水印&#xff08;Digital Watermark&#xff09;技术是将与多媒体内容相关或不相关的一些标示信息直接嵌入多媒体内容当中&#xff0c;但不影响原内容的使用价值&#xff0c;并不容易被人的知觉系统觉察或注意到。通过这些隐藏在多媒体内容中的…

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割!

【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割&#xff01; 【语义分割|代码解析】CMTFNet-2: CNN and Multiscale Transformer Fusion Network 用于遥感图像分割&#xff01; 文章目录 【语义分割|代码解析】CMTFNet-2: …

在暗处执着生长,终有一日馥郁传香

总有人说很孤独&#xff0c;一个人吃饭&#xff0c;一个人上班&#xff0c;一个人逛街&#xff1b; 总有人又说享受孤独&#xff0c;面对时间&#xff0c;迎接苦难&#xff0c;战胜痛苦&#xff1b; 可没人说这些的大前提是你要有信念支撑啊&#xff0c;如果干完了上面的所有&a…

揭秘集装箱箱号自动识别原理,箱号识别算法

集装箱箱号自动识别算法是一种高效且实用的软件工具。它利用相机、手机或其他摄像头捕获集装箱箱号图像&#xff0c;并通过深度学习的OCR&#xff08;光学字符识别&#xff09;识别技术对集装箱号码进行准确识别。要想进行集装箱箱号识别&#xff0c;需要以下几个基本步骤&…

JavaScript 网页设计详解教程

JavaScript 网页设计详解教程 引言 JavaScript 是一种广泛使用的编程语言&#xff0c;主要用于网页开发。它使得网页具有动态交互性&#xff0c;能够响应用户的操作。随着前端开发的不断发展&#xff0c;JavaScript 已成为现代网页设计中不可或缺的一部分。本文将详细介绍 Ja…

高新技术企业知识库搭建:在创新创业中的支撑作用

在快速迭代的科技时代&#xff0c;高新技术企业&#xff08;以下简称“高企”&#xff09;作为推动经济社会发展的核心力量&#xff0c;正面临着前所未有的创新挑战与机遇。知识库&#xff0c;作为信息时代的智慧宝库&#xff0c;不仅承载着企业内部的宝贵知识与经验&#xff0…

ReposVul: A Repository-Level High-Quality Vulnerability Dataset 论文阅读

本文发表于 ICSE2024 会议中。 引入 在过去的漏洞数据库中&#xff0c;主要存在以下几种问题&#xff1a; 无效补丁&#xff08;Tangled Patches&#xff09;&#xff1a;针对某个漏洞的补丁无法正确修复该漏洞缺乏跨函数漏洞&#xff08;Inter-procedural Vulnerabilities&…

【图解版】力扣第70题:爬楼梯

推理出状态表达式 f(5)表示到达第5层&#xff0c;所有可能的方法数。 到达第5层&#xff0c;有可能是从第4层走一步上来&#xff0c;也有可能是从第3层走两步上来。所以我们可以慢慢延伸&#xff0c;画出上面&#x1f446;&#x1f3fb;的图。 从图中&#xff0c;我们可以看到…

使用Docker快速部署FastAPI Web应用

Docker是基于 Linux 内核的cgroup、namespace以及 AUFS 类的Union FS 等技术&#xff0c;对进程进行封装隔离&#xff0c;一种操作系统层面的虚拟化技术。Docker中每个容器都基于镜像Image运行&#xff0c;镜像是容器的只读模板&#xff0c;容器是模板的一个实例。镜像是分层结…

QT——自定义控件绘图

一.QPaintEvent绘图事件 QPaintEvent是QT中一个重要的类&#xff0c;专门用于绘图事件。当QT视图组件需要重绘制自己的一部分时&#xff0c;就会产生该事件&#xff0c;通常发生在以下几种情况。 窗口第一次显示时&#xff1a;当窗口或控件第一次出现在屏幕中&#xff0c;系统…

Java项目实战II基于Java+Spring Boot+MySQL的高校办公室行政事务管理系统(源码+数据库+文档)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在高等教育…

非计算机背景但是想从事医学AI研究,需要掌握的编程语言|个人观点·24-11-08

小罗碎碎念 目前&#xff0c;我们从事医学AI研究的&#xff0c;接触的最多的两种编程语言应该就是R和Python了。那么初学者很容易提出一个疑问&#xff0c;**我想从事医学AI相关的研究的话&#xff0c;应该学哪些编程语言呢&#xff1f;**在文章的开头&#xff0c;我可以先给出…

arkUI:Flex弹性布局的各个属性

arkUI&#xff1a;Flex弹性布局的简单使用 1 主要内容说明2 相关内容2.1 Flex弹性布局的方向2.1.1 源码1的简答说明2.1.2 源码1 &#xff08;Flex弹性布局的方向&#xff09;2.1.3 源码1运行效果2.1.3.1 当direction: FlexDirection.RowReverse2.1.3.2 当direction: FlexDirect…

高效Web测试:构建Pytest、Allure和Jenkins的自动化测试生态

Pytest介绍 pytest是一个非常成熟的全功能的Python测试框架&#xff0c;主要有以下几个特点&#xff1a;简单灵活、容易上手、文档丰富&#xff1b;支持参数化&#xff0c;可以细粒度地控制被测用例&#xff1b;能够支持简单的单元测试和复杂的功能测试&#xff0c;还可以用来…

ros入门:topic话题通信(c++)

准备工作 创建工作空间 mkdir -p demo02_pub/src/ 生成依赖文件 cd demo02_pub/ catkin_make 进入src目录执行 catkin_create_pkg ros_pub_sub/ roscpp rospy std__msgs 发布者实现 消息发布代码编写 cd demo02_pub/src/ros_pub_sub/src 创建代码文件demo01_pub.cc …

重建大师7.0 | 质效全面提升,塑造更优质的实景三维重建

在大势智慧“AI智算、国产信创”2024秋季新品发布会上&#xff0c;重建大师7.0版以其卓越性能惊艳登场。这一新版本不仅引入了创新的倾斜高斯泼溅方法&#xff08;OPGS&#xff09;&#xff0c;实现城市级场景的高效三维重建。 针对传统倾斜建模方法&#xff0c;重建大师7.0同…

Unity性能优化5【物理篇】

1.刚体的碰撞检测属性首选离散型 离散碰撞的缺点是小物体快速移动时&#xff0c;有丢失碰撞的风险。此下拉菜单中&#xff0c;越下面的选项碰撞检测频率越高&#xff0c;性能消耗也显著增加。因此在选择碰撞检测类型时尽量选择离散型。 2.优化碰撞矩阵 合理标记碰撞矩阵可以减…

【threejs】创建及管理场景内的后期处理效果(以bloom为例,开箱即用)

场景内使用 //创建后期通道this.effectManager new EffectManager({ renderer, camera, scene, dom })//循环渲染// 动画----------effect为我控制后期特效的开关animate() {requestAnimationFrame(this.animate);let { camera, controls, effectManager, effect } thisif (!…

建立用邻接表表示的无向图

创建一个建立用邻接表表示的无向图 #include<stdio.h> #include<stdlib.h> typedef struct node {int adjvex;struct node *next; }Anode; typedef struct {char vertex;Anode *link; }Unode; typedef struct {Unode adjlist[100];int vexnum,arcnum; }Adjgraph; …

芯片需要按一下keyup或者复位按键虚拟或者下载之后芯片能下载却运行不了或者需要额外供电。

这些问题很有可能是因为外围电路器件幅值与设计不同的存在&#xff0c;导致你需要外部供电才能实现一个正常运行&#xff0c;可以检查一下外围电路在供电区域的电流区&#xff0c;电阻幅值是否和原理图设计时看的一模一样或者直接更换 因为按键会失灵&#xff0c;首先检查复位按…