点击劫持:X-Frame-Options 未配置

前言

X-Frame-Options作为HTTP头的一部分,是一种用于保护网站免受点击劫持攻击的安全措施。网站可以通过设置X-Frame-Options或csp报头来控制网站本身是否可以被嵌套到iframe中。

漏洞描述

Clickjacking(点击劫持)是一种安全漏洞,通常出现在网站未配置适当的安全标头时,该漏洞由互联网安全专家罗伯特·汉森和耶利米·格劳斯曼在2008年提出的。当网站未配置X-Frame-Options头时,它可能受到点击劫持攻击的威胁。这意味着攻击者可以在其恶意网站中将目标网站嵌套到iframe中,并引导用户执行未经授权的操作,使用户不知情地与目标网站互动。

漏洞危害

未配置X-Frame-Options头可能导致以下危害:

  • 用户被欺骗执行不希望执行的操作。
  • 用户的敏感数据(如用户名和密码)可能被窃取。
  • 网站的访问量可能被滥用,用于刷点击量或推广不良内容。
  • 攻击者可能传播恶意软件或进行其他恶意活动。

利用场景

点击劫持的利用场景如:刷点击量、骗取关注、点击广告或链接、点击广告或链接等。以刷点击量为例,假设存在某个场景,并描述其利用方式

假设a博客网站未配置X-Frame-Options头,小明在该博客网站上发布了一篇博客,现在小明想利用点击劫持来刷该博客的访问量,那小明可能采用的点击劫持攻击来刷博客访问量的过程如下:

  1. 博客网站未配置X-Frame-Options头:博客网站的管理员未正确配置X-Frame-Options头,这意味着博客网站的内容可以被嵌套到iframe中。
  2. 小明创建恶意网站:小明创建了一个恶意网站,其中包含了点击劫持攻击的代码。
  3. 在恶意网站上嵌套博客:小明在他的恶意网站中创建一个透明的iframe,将博客网站的URL嵌套到iframe中。用户访问小明的恶意网站时,他们可能看到一个吸引人的内容,而不知道博客网站的内容也被加载到了iframe中。
  4. 引导用户进行点击操作:小明可能在恶意网站上提供吸引人的内容,例如奖品抽奖、免费资源等,并引导用户执行点击操作。
  5. 触发点击劫持:当用户在恶意网站上执行点击操作时,iframe中的博客网站也会接收到相同的点击操作。
  6. 用户点击被计入博客网站访问量:尽管用户认为他们只是在小明的恶意网站上与吸引人的内容互动,但实际上他们的点击操作也被重定向到了博客网站上。这将导致博客网站的访问量增加。
  7. 小明达到他的目标:小明的目标是刷博客的访问量,他可能通过引导更多用户来访问他的恶意网站,从而增加博客网站的访问量。

这个过程说明了如何利用点击劫持攻击来增加博客网站的访问量,尽管用户不清楚他们的点击操作实际上也在访问博客网站。

判断是否存在点击劫持问题

  1. 查看响应头是否存在“X-Frame-Options: ”或 “Content Security Policy”报头,如果在响应头中找不到"X-Frame-Options"报头,并且不存在Content Security Policy(CSP)报头。那么网站可能存在点击劫持漏洞。

为了判断的准确性,可以进行下一步判断

  1. 在本地新建一个html文件,src = 'url' 中填写要测试的网站
<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>点击劫持示例</title></head><body><h1>点击劫持示例页面</h1><button id="clickMe">点击我</button><iframe id="evilIframe" style="opacity: 0;"></iframe><script>document.getElementById('clickMe').addEventListener('click', function() {// 在点击按钮时,触发iframe中的操作document.getElementById('evilIframe').style.opacity = '1';document.getElementById('evilIframe').src = 'https://stack.chaitin.com';});</script></body>
</html>

代码说明:

  • <iframe> 元素中,style="opacity: 0;":通过将opacity样式设置为0,使该iframe最初是不可见的。src属性:在此示例中,src属性被省略了,因此最初没有指定要加载的内容。
  • document.getElementById('clickMe').addEventListener('click', function() {...}):这行代码为按钮添加了一个点击事件监听器。当用户点击按钮时,以下操作将被执行:
    • document.getElementById('evilIframe').style.opacity = '1';:这行代码将第一个<iframe>元素的opacity样式设置为1,使其变得可见。
    • document.getElementById('evilIframe').src = 'https://stack.chaitin.com';:这行代码将第一个<iframe>元素的src属性设置为"https://stack.chaitin.com",导致该iframe加载该网站的内容。
  1. 点击 点击我,如果成功加载了目标网站,说明目标网站可以被其他网站嵌入 ,存在点击劫持问题

https://stack.chaitin.com 未设置X-Frame-Options或csp报头,所以其他网站可以将其嵌入

将加载的网站换为baidu,可以看到百度的响应头设置了csp报头

尝试嵌入百度网页,失败

修复方式

  1. 使用"X-Frame-Options"报头:在Web服务器上配置"X-Frame-Options"报头,以明确指定哪些网站可以嵌套您的网站内容。您可以将其设置为以下值之一:
    • "DENY":不允许任何网站嵌套您的内容。
    • "SAMEORIGIN":只允许相同域名的网站嵌套您的内容。
    • "ALLOW-FROM uri":只允许特定URI指定的网站嵌套您的内容。
  1. 使用Content Security Policy(CSP):CSP是一种更强大的安全机制,可以通过策略指令来控制网页的行为,包括防止iframe嵌套攻击。
  2. 显示安全性提示:在您的网页上显示安全性提示,通知用户他们正在访问的页面是受保护的,可以帮助减少点击劫持的风险。
  3. 不要使用透明iframe:避免在您的网站上使用透明的iframe元素,因为攻击者通常会利用这种情况。
  4. 更新浏览器:鼓励用户使用最新版本的浏览器,因为现代浏览器通常会实施一些保护机制来防止点击劫持攻击。

修复点击劫持漏洞是非常重要的,以保护用户和网站的安全。以上措施可以提高网站的安全性,但根据具体情况,可能需要结合其他安全措施来提高保护水平。

csp

如果一个网站的响应头中存在Content Security Policy(CSP)报头,但没有X-Frame-Options报头,那么通常情况下,这个网站不存在点击劫持问题。CSP报头可以提供更强大的安全性控制,包括防止点击劫持攻击。

CSP允许网站管理员指定哪些内容和资源可以加载到网页中,以及如何加载这些内容。其中一个CSP指令是frame-ancestors,它用于指定哪些页面可以嵌套当前页面。如果CSP报头中包含适当的frame-ancestors策略,它将限制哪些网站可以将该网站嵌套到iframe中,从而防止点击劫持攻击。

例如,以下是一个CSP报头示例,其中包含frame-ancestors指令:

cssCopy code
Content-Security-Policy: frame-ancestors 'self' example.com

上述策略将只允许网站自身('self')和example.com将该网站嵌套到iframe中。如果其他网站尝试嵌套该网站,浏览器会拒绝加载。

总之,CSP报头通常提供更强大的安全性控制,可以防止点击劫持攻击,前提是它们正确配置并包括适当的frame-ancestors策略。因此,如果网站启用了CSP,并且CSP策略正确配置,那么它通常不会存在点击劫持问题,即使没有X-Frame-Options报头。但是,确保正确配置CSP非常重要,以确保其有效性。

补充

X-Frame-Options可以将其配置在整个网站上,也可以在每个页面上单独配置。

如下网站的一个页面未配置xfo

该页面可以被嵌套

然后网站的登录页面设置了相关标头

导致嵌入失败

参考:X-Frame-Options响应头防点击劫持-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[天翼杯 2021]esay_eval - RCE(disabled_function绕过||AS_Redis绕过)+反序列化(大小写wakeup绕过)

[天翼杯 2021]esay_eval 1 解题流程1.1 分析1.2 解题1.2.1 一阶段1.2.2 二阶段二、思考总结题目代码: <?php class A{public $code = "";

湖州OLED透明拼接屏技术应用引领现代化旅游观光方式

湖州市位于中国浙江省北部&#xff0c;拥有悠久的历史和丰富的文化遗产。湖州市以其美丽的湖泊和秀丽的自然风光而闻名。 作为中国重要的历史文化名城之一&#xff0c;湖州市有着丰富的文化遗产和历史资源&#xff0c;如古城墙、古建筑和古镇等。 这为OLED透明拼接屏技术的应用…

canvas力导布局

老规矩&#xff0c;先上效果图 <html><head><style>* {margin: 0;padding: 0;}canvas {display: block;width: 100%;height: 100%;background: #000;}</style> </head><body><canvas id"network"></canvas> </…

如何避免 IDEA 每次重启都index

如何避免 IDEA 每次重启都index 在 IntelliJ IDEA 中&#xff0c;可以通过以下几个步骤来避免每次重启时索引&#xff1a; 打开 File -> Settings 菜单。在左侧的菜单栏中选择 “Appearance & Behavior” -> “System Settings” -> “Synchronization”。 在右…

力扣第501题 二叉树的众数 c++ (暴力 加 双指针优化)

题目 501. 二叉搜索树中的众数 简单 相关标签 树 深度优先搜索 二叉搜索树 二叉树 给你一个含重复值的二叉搜索树&#xff08;BST&#xff09;的根节点 root &#xff0c;找出并返回 BST 中的所有 众数&#xff08;即&#xff0c;出现频率最高的元素&#xff09;。 …

【Redis】Set集合相关的命令

目录 命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREMSINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 命令 SADD 将⼀个或者多个元素添加到set中。注意&#xff0c;重复的元素⽆法添加到set中。 SADD key member [member ...]SMEMBERS 获取⼀个set中的所有元素&#xff0…

js事件循环详解

事件循环简介 JavaScript的事件循环是一种处理异步事件和回调函数的机制&#xff0c;它是在浏览器或Node.js环境中运行&#xff0c;用于管理任务队列和调用栈&#xff0c;以及在适当的时候执行回调函数。 事件循环的基本原理是&#xff0c;JavaScript引擎在空闲时等待事件的到…

苹果ios开发者ipa文件包内测人数签名真机数量满了应该怎么做?

苹果ios开发者ipa文件包内测人数签名真机数量满了应该怎么做&#xff1f; 有人总是问我开发者的设备满了怎么做才可以让设备增加&#xff1f;或者我要怎么做才能让员工的设备都可以安装&#xff0c;那么首先我们要做到的就是要知道我们的开发者都是拥有多少内测设备&#xff1f…

jupyter notebook如何实现代码提示功能?

jupyter notebook在数据分析中使用非常方便&#xff0c;但是没有代码提示功能&#xff0c;让人感觉有一点点遗憾&#xff1f;如何实现代码提示功能呢&#xff1f;以下实现亲测有效。 本人python版本是3.8. 首先关闭jupyter notebook&#xff0c;安装相关的库。 一、需要提前…

MongoDB——centOS7环境Mongodb权限管理(图解版)

目录 一、MongDB权限概述1.1、MongDB权限概述1.2、MongDB权限列表 二、Mongodb权限管理示例2.1、创建账号2.1.1、创建管理员用户2.1.2、开启认证2.1.3、创建普通账号 一、MongDB权限概述 1.1、MongDB权限概述 mongodb是没有默认管理员账号&#xff0c;所以要先添加管理员账号…

【Python 零基础入门】 函数

【Python 零基础入门】第五课 函数 【Python 零基础入门】第五课 函数函数在生活中的类比函数为什么要使用函数函数的格式无参函数含参函数 参数形参实参 变量作用域局部变量全局变量 递归函数基本的递归斐波那契数列 Lambda 表达式高阶函数map 函数filter 函数reduce 函数结合…

Node历史版本下载及配置npm镜像

https://nodejs.org/en/download/releases 点击对应版本Release,选择合适的包&#xff0c;进行下载安装。 配置国内镜像 npm config set registry https://registry.npmmirror.com/

Practical Memory Leak Detection using Guarded Value-Flow Analysis 论文阅读

本文于 2007 年投稿于 ACM-SIGPLAN 会议1。 概述 指针在代码编写过程中可能出现以下两种问题&#xff1a; 存在一条执行路径&#xff0c;指针未成功释放&#xff08;内存泄漏&#xff09;&#xff0c;如下面代码中注释部分所表明的&#xff1a; int foo() {int *p malloc(4 …

上海亚商投顾:沪指冲高回落 医药、芯片股全天领涨

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 沪指昨日小幅反弹&#xff0c;创业板指盘中涨超1.6%&#xff0c;午后涨幅有所收窄。医药医疗股全线走强&#…

LLM - 旋转位置编码 RoPE 代码详解

目录 一.引言 二.RoPE 理论 1.RoPE 矩阵形式 2.RoPE 图例形式 3.RoPE 实践分析 三.RoPE 代码分析 1.源码获取 2.源码分析 3.rotary_emb 3.1 __init__ 3.2 forward 4.apply_rotary_pos_emb 4.1 rotate_half 4.2 apply_rotary_pos_emb 四.RoPE 代码实现 1.Q/K/V …

飞桨大模型套件:一站式体验,性能极致,生态兼容

在Wave Summit 2023深度学习开发者大会上&#xff0c;来自百度的资深研发工程师贺思俊和王冠中带来的分享主题是&#xff1a;飞桨大模型套件&#xff0c;一站式体验&#xff0c;性能极致&#xff0c;生态兼容。 大语言模型套件PaddleNLP 众所周知PaddleNLP并不是一个全新的模型…

腾讯云轻量2核4G5M可容纳多少人访问?

腾讯云2核4G5M服务器支持多少人在线访问&#xff1f;卡不卡&#xff1f;腾讯云轻量2核4G5M带宽服务器支持多少人在线访问&#xff1f;5M带宽下载速度峰值可达640KB/秒&#xff0c;阿腾云以搭建网站为例&#xff0c;假设优化后平均大小为60KB&#xff0c;则5M带宽可支撑10个用户…

ad5665r STM32 GD32 IIC驱动设计

本文涉及文档工程代码&#xff0c;下载地址如下 ad5665rSTM32GD32IIC驱动设计,驱动程序在AD公司提供例程上修改得到,IO模拟的方式进行IIC通信资源-CSDN文库 硬件设计 MCU采用STM32或者GD32,GD32基本上和STM32一样,针对ad566r的IIC时序操作是完全相同的. 原理图设计如下 与MC…

matlab绘制尖角colorbar

Matlab代码 cmap [69 117 180116 173 203171 217 233254 224 144253 174 77244 109 67215 48 39165 0 38]/255; %画图的部分代码 figure set(gcf,outerposition,get(0,screensize)) ax axes(Position,[0.2 0.2 0.6 0.6]); % pos需要自己设置位置 h colorbar; % colormap(ax…

bash上下键选择选项demo脚本

效果如下&#xff1a; 废话不多说&#xff0c;上代码&#xff1a; #!/bin/bashoptions("111" "222" "333" "444") # 选项列表 options_index0 # 默认选中第一个选项 options_len${#options[]}echo "请用上下方向键进行选择&am…