「 网络安全术语解读 」点击劫持Clickjacking详解

引言:要想深入理解点击劫持攻击,我们需要先清楚iframe的用途及优缺点。

1. 关于iframe

iframe是HTML语言中的一部分,通常用于在网页中嵌入其他网页的内容,如图像、视频、音频、链接等。它允许在一个网页中插入另一个网页,就像在一个网页中插入一个表格一样。

使用iframe有几个优点:

  • 内容重用:iframe嵌入的内容通常已经预先加载,这样可以减少加载时间,提高页面加载速度。
  • 内容管理:嵌入的内容通常由其所有者或管理员进行维护和更新,这对于一个包含多个独立内容的网站来说非常重要。
  • SEO友好:通过iframe嵌入的内容可以通过外部链接直接访问,有助于搜索引擎优化(SEO)。

然而,iframe也有一些缺点,由于iframe的嵌套关系,可能会导致浏览器加载速度变慢,甚至影响页面的布局和样式。另外,如果对iframe的内容没有正确的权限控制,可能会泄露敏感信息或导致安全风险(PS:这就引出了本文接下来要讨论的重点)。

2. Clickjacking的定义

点击劫持(Clickjacking)是一种常见的网络安全攻击手段,它是一种基于界面的攻击手段,利用了隐藏的网站通过诱骗用户点击诱饵网站中的其他内容来点击一个隐藏的网站上的可操作内容。

举例:
一个网络用户访问一个诱饵网站(可能是通过电子邮件提供的链接),并点击一个按钮以赢得奖品。不知不觉中,他们被攻击者欺骗,按下了另一个隐藏按钮,结果在另一个网站上执行了账户支付。
在这里插入图片描述

Note:这种攻击技术依赖于在iframe中嵌入一个或多个包含按钮或隐藏链接的不可见网页,这些网页在用户预期的诱饵网站内容上方叠加。这种攻击与CSRF攻击不同,因为用户需要执行诸如点击按钮之类的操作,而CSRF攻击则是在用户不知情或未输入的情况下伪造整个请求。

3. 常见点击劫持手段

  • 界面欺骗:攻击者通常会使用一些HTML和CSS技术,如使用透明度、动画效果、边框阴影等视觉欺骗手段,使得用户界面看起来像一个合法的应用程序或网站。
  • 跨站脚本(XSS)攻击:攻击者可能会利用跨站脚本攻击,获取用户的用户名、密码或其他敏感信息。在某些情况下,攻击者可能会在受害者的浏览器上注入恶意代码,并利用浏览器的漏洞来控制用户的界面。
  • 客户端交互设计:攻击者通过精心设计的交互设计,使得用户点击错误的按钮或链接,导致执行恶意操作。例如,攻击者可能会在用户界面中设置一个假的提交按钮,诱使用户点击它并提交敏感信息。

4. 如何缓解点击劫持攻击

为了防止Clickjacking攻击,可以采用以下几种方法:

  • 1. 使用X-Frame-Options头部:这是一种HTTP标头,用于告诉浏览器哪些网站可以包含这个页面。对于一个公共网站,通常使用“DENY”或“SAMEORIGIN”来防止其他网站将该页面嵌入其中。

  • 2. 使用CSP头部: CSP(Content Security Policy)是一种强大的HTTP标头,可以配置一个网页内的内容。它可以用于禁止嵌入页面中的某些iframe或all iframe(所有的iframe都不被允许)。如果使用恰当,可显著降低Clickjacking的风险。关于CSP的详细介绍可以参阅博主文章《「 网络安全术语解读 」内容安全策略CSP详解》

  • 3. 增强用户界面的可见性:通过将按钮或链接置于iframe之外,使它们更易于看到,可以减少用户被欺骗点击的可能性。

  • 4、提示用户确认操作:在执行敏感操作之前,可以向用户显示一个确认框,要求他们确认操作。这可以增加用户的警觉性。

  • 5. 启用跨站请求伪造保护:大多数现代浏览器都内置了跨站请求伪造(CSRF)的保护机制。如果启用了这个机制,用户就不太可能受到Clickjacking攻击的影响,因为攻击者需要用户执行一些操作时必须使用用户已经登录并授权的网站。

Note:1、2是服务端的承防护策略,3、4是客户端的防护策略,5是服务端+客户端防护策略。

此外,加强安全意识培训和教育也是非常重要的,以减少人为因素导致的安全漏洞。

5. 参考

[1] https://portswigger.net/web-security/clickjacking

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

meshlab点云平滑

文章目录 深度平滑拉普拉斯平滑Taubin 平滑其他改进的拉普拉斯平滑 Meshlab界面认识 创建几何对象 Meshlab在Filters->Smoothing, Fairing and deformation中,提供了许多滤波工具,其中与平滑滤波相关的列表如下,本节中所有用到的工具均来…

2019年认证杯SPSSPRO杯数学建模B题(第一阶段)外星语词典全过程文档及程序

2019年认证杯SPSSPRO杯数学建模 基于方差分布的方法对未知语言文本中重复片段的自动搜索问题的研究 B题 外星语词典 原题再现: 我们发现了一种未知的语言,现只知道其文字是以 20 个字母构成的。我们已经获取了许多段由该语言写成的文本,但…

C++面试宝典第18题:旋转数组

题目 给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。要求如下: (1)尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 (2)使用时间复杂度为O(n)和空间复杂度为O(1)的原地算法解决这个问题。 示例 1: 输入: [1, 2, 3, 4, 5, 6, 7] 和 k…

GPT function calling v2

原文:GPT function calling v2 - 知乎 OpenAI在2023年11月10号举行了第一次开发者大会(OpenAI DevDays),其中介绍了很多新奇有趣的新功能和新应用,而且更新了一波GPT的API,在1.0版本后的API调用与之前的0.…

MySQL 从零开始:02 MySQL 安装

文章目录 1、下载 MySQL 安装程序2、安装 MySQL 要操作 MySQL ,首先要安装 MySQL ,本文将一步步展示如何安装 MySQL,简直详细到令人发指。 环境: 操作系统:Windows10 64位MySQL版本:社区版 8.0.11.0 1、下…

SpringBoot集成Skywalking实现分布式链路追踪

官方网址: Apache SkyWalking官方文档: SkyWalking 极简入门 | Apache SkyWalking下载地址:Downloads | Apache SkyWalking Agent:以探针的方式进行请求链路的数据采集,并向管理服务上报; OAP-Service&am…

L1-096:谁管谁叫爹

《咱俩谁管谁叫爹》是网上一首搞笑饶舌歌曲,来源于东北酒桌上的助兴游戏。现在我们把这个游戏的难度拔高一点,多耗一些智商。 不妨设游戏中的两个人为 A 和 B。游戏开始后,两人同时报出两个整数 NA​ 和 NB​。判断谁是爹的标准如下&#xff…

pythroch abaconda 安装 cuda 版本确定

一、简述 公司有一个深度学习的项目,由于目前没有项目。时间也有恰好可以一起学习一下 1、下载abaconda https://repo.anaconda.com/archive/ 2、安装 环境变量要✔ 其他一直下一步 3、测试 (base) C:\Users\alber>conda -V conda 23.1.0(base) C:\User…

【设计模式-02】Strategy策略模式及应用场景

一、参考资料 Java 官方文档 Overview (Java SE 18 & JDK 18)module indexhttps://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 & JDK 18)declaration: module: java.base, pa…

C++学习笔记——队列模拟

目录 一、模拟队列 二、模拟队列的知识点 三、队列 3.1入队操作 3.2出队操作 3.3访问队首元素 3.4访问队尾元素 3.5判断队列是否为空 3.6获取队列的大小 四、实现队列的基本功能 一、模拟队列 当涉及到数据存储和处理时,队列是一种常见的数据结构&#x…

最新版CleanMyMac X4.14.7智能清理mac磁盘垃圾工具

CleanMyMac X是一款专业的Mac清理软件,可智能清理mac磁盘垃圾和多余语言安装包,快速释放电脑内存,轻松管理和升级Mac上的应用。同时CleanMyMac X可以强力卸载恶意软件,修复系统漏洞,一键扫描和优化Mac系统,…

java SSM物业管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM物业管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和 数据库,系统主要采用B/…

Java 对象的内存布局

目录 一. 前言 二. Java 对象的内存布局 三. Java 对象结构 3.1. 对象头 3.1.1. Mark Word 3.1.2. 类型指针(Class Metadata Pointer) 3.1.3. 数组长度(Length) 3.2. 实例数据 3.3. 对齐填充(Padding&#xf…

如何在SpringBoot中优雅地重试调用第三方API?

1.引言 在实际的应用中,我们经常需要调用第三方API来获取数据或执行某些操作。然而,由于网络不稳定、第三方服务异常等原因,API调用可能会失败。为了提高系统的稳定性和可靠性,我们通常会考虑实现重试机制。 2.重试机制的必要性 第三方API调用可能面临各种不可预测的问题…

Win10下python3和python2同时安装并解决pip共存问题

特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似。 使用python开发,环境有Python2和 python3 两种,有时候需要两种环境切换使用,下面提供详细教程一份。 1、下载…

Centos7升级openssl到openssl1.1.1

Centos7升级openssl到openssl1.1.1 1、先查看openssl版本:openssl version 2、Centos7升级openssl到openssl1.1.1 升级步骤 #1、更新所有现有的软件包列表并安装最新的软件包: $sudo yum update #2、接下来,我们需要从源代码编译和构建OpenS…

Vue3 子传父 暴露数据 defineExpose

defineExpose 属性:用于将子组件中的数据和方法,暴露给父组件,父组件再配合 ref 属性使用。 语法格式 // 子组件:暴露数据和方法 defineExpose({ 数据, 数据, 方法 });// 父组件:使用数据和方法 ref名称.value.数据 …

领域专家精心讲解AI视频生成

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的…

PPT插件-大珩助手-快速构建自己的图形

绘图板-快速构建自己的图形 通过手绘的方式,快速构建自己的想法和创意,通过在PPT中插入绘图,植入背景透明的绘图,点击画笔可切换橡皮擦,可以清空画板重新绘制。 素材库-存储图形 通过素材库存储自己的图形 图形调整…

【笔记------coremark】单片机上的跑分库coremark移植

coremark的官方仓库:https://github.com/eembc/coremark 官方收录了很多单片机的跑分情况:https://www.eembc.org/coremark/scores.php 这个是我建立的一个仓库,用来收集自己用到的一些单片机的跑分情况:https://gitee.com/wild_c…