点击劫持概念及解决办法

news2024/11/26 19:32:20

1.点击劫持的概念

        点击劫持 (Clickjacking) 技术又称为界面伪装攻击 (UI redress attack ),是一种视觉上的欺骗手段。攻击者使用一个或多个透明的 iframe 覆盖在一个正常的网页上,然后诱使用户在该网页上进行操作,当用户在不知情的情况下点击透明的 iframe 页面时,用户的操作已经被劫持到攻击者事先设计好的恶意按钮或链接上。攻击者既可以通过点击劫持设计一个独立的恶意网站,执行钓鱼攻击等;也可以与 XSS 和 CSRF 攻击相结合,突破传统的防御措施,提升漏洞的危害程度

2.测试案例

新建一个html,src内容为目标网站

<head>

</head>
...
<body>
  <iframe id="target_website" src="http://localhost:8090/ssm_maven/student/add">
  </iframe>
</body>

项目地址为:

https://gitee.com/fluosetine/java-projects.git

效果如下:

可以把嵌入的页面隐藏,使用一些其他的页面覆盖在上边,进行相关的操作。

3.解决办法

在微软发布新一代的浏览器 Internet Explorer 8.0 中首次提出全新的安全机制:X-FRAME-OPTIONS。该机制有两个选项:DENY 和 SAMEORIGIN。DENY 表示任何网页都不能使用 iframe 载入该网页,SAMEORIGIN 表示符合同源策略的网页可以使用 iframe 载入该网页。如果浏览器使用了这个安全机制,在网站发现可疑行为时,会提示用户正在浏览 网页存在安全隐患,并建议用户在新窗口中打开。这样攻击者就无法通过 iframe 隐藏目标的网页。

X-Frame-Options HTTP 响应头,可以指示浏览器是否应该加载一个 iframe 中的页面。网站可以通过设置 X-Frame-Options 阻止站点内的页面被其他页面嵌入从而防止点击劫持。

X-Frame-Options 共有三个值:

DENY:任何页面都不能被嵌入到 iframe 或者 frame 中。

SAMEORIGIN:页面只能被本站页面嵌入到 iframe 或者 frame 中。

ALLOW-FROM URI:页面自能被指定的 Uri 嵌入到 iframe 或 frame 中。 

对于 java 项目,只需设置过滤器 在过滤器中指定 response.addHeader ("x-frame-options","SAMEORIGIN"); 就行了

增加过滤器,项目中相关的类AddResponseHeaderFilter

public class AddResponseHeaderFilter extends OncePerRequestFilter
{

	//Internet Explorer 8.0中
	@Override
	protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
			throws ServletException, IOException {
		System.out.println("=====X-Frame-Options, SAMEORIGIN=====");
        String requestUrI = request.getRequestURI().toString();
        System.out.println(requestUrI);
        //response.addHeader("x-frame-options","DENY"); // 任何页面都不能被嵌入到 iframe 或者 frame 中。
        response.addHeader("X-Frame-Options", "SAMEORIGIN");//页面只能被本站页面嵌入到 iframe 或者 frame 中。
        filterChain.doFilter(request, response);
		
	}

}

解决后效果如下:

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

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

相关文章

靶场上新:Openfire身份认证绕过

本文由掌控安全学院-江月投稿 封神台新上线漏洞复现靶场&#xff1a;Openfire身份认证绕过。 漏洞详情&#xff1a; Openfire是采用Java编程语言开发的实时协作服务器&#xff0c;Openfire的管理控制台是一个基于Web的应用程序&#xff0c;被发现可以使用路径遍历的方式绕过…

GIS前端编程 地图常用操作

GIS前端编程 地图常用操作 地图背景设置地图定位地图级数控制获取显示参数 地图操作是WebGIS应用的基本功能&#xff0c;如缩放、移动等操作。在实际WebGIS应用中&#xff0c;地图操作方式多种多样。下面主要介绍以下几种地图操作&#xff1a;地图背景设置、地图定位、地图级数…

WebDAV之π-Disk派盘 + BubbleUPnP

BubbleUPnP是一款功能强大的Android播放器,支持UPnP/DLNA多屏互动。它可以将手机内容投屏到电视大屏上,与家人和朋友一起共享。此外,BubbleUPnP还提供了丰富的音乐和影视资源,您可以在线搜索并播放喜欢的内容。 以下是BubbleUPnP的一些主要特点: 1. 支持Chromecast和转码…

2023 致远OA-任意用户密码重置漏洞

一、致远OA 致远OA是一款企业级办公自动化软件&#xff0c;它提供了一系列的办公自动化解决方案&#xff0c;包括文档管理、流程管理、协同办公、知识管理、人力资源管理等功能。致远OA可以帮助企业实现信息化管理&#xff0c;提高工作效率和管理水平&#xff0c;同时也可以提高…

【Linux 运维必备的 13 款实用工具,赶紧收藏~】

转载&#xff1a;https://blog.csdn.net/jb19900111/article/details/17756183 本文介绍几款Linux运维比较实用的工具&#xff0c;希望对Linux管理员有所帮助。 1、查看进程占用带宽情况-Nethogs Nethogs 是一个终端下的网络流量监控工具可以直观的显示每个进程占用的带宽。 …

【教学类-32-03】20230906十二生肖3.0上课版(绘画+手工+排序+左右分类+玩牌)(大班:《我是中国人》偏科学-数)

背景需求&#xff1a; 8月30日收到一个信息技术比赛的通知&#xff0c;9月10日前完工&#xff0c;单位里大活动很多&#xff0c;人手极度不足。作为信息员&#xff0c;只能自己顶上&#xff0c;做课件、开录课&#xff0c;完成这来之不易的KPI&#xff08;去年疫情&#xff0c…

【Prometheus】Prometheus+Grafana部署

Prometheus 概述 官网https://prometheus.io/docs/introduction/overview/ Prometheus 是一款基于时序数据库的开源监控告警系统&#xff0c;非常适合Kubernetes集群的监控。Prometheus的基本原理是通过HTTP协议周期性抓取被监控组件的状态&#xff0c;任意组件只要提供对应的…

批量处理长视频,提高视频制作效率的技巧分享

在视频制作过程中&#xff0c;我们常常需要处理大量的长视频&#xff0c;例如从拍摄的整个影片中剪出某些特定的片段&#xff0c;或者需要把一个长的视频分割成多个小片段。这个过程可以是极其耗时和困难的&#xff0c;但幸运的是&#xff0c;现在有许多工具可以帮助我们自动化…

Biome-BGC生态系统模型与Python融合

目录 一 模式讲解 二 学习基础 三 数据处理 四 单点的模拟 五 区域模拟-1 六 长时间序列模拟案例 七 分析 Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数&#xff0c;模拟日尺度碳、水和氮通量的有效模型&#xff0c;其研究的空间尺度可以从点尺度扩展到陆地…

堆的实现(C版)

普通的二叉树是不适合用数组来存储的&#xff0c;因为可能会存在大量的空间浪费。而完全二叉树更适合使用顺序结构存储。现实中我们通常把堆(一种二叉树)使用顺序结构的数组来存储&#xff0c;需要注意的是这里的堆和操作系统虚拟进程地址空间中的堆是两回事&#xff0c;一个是…

2023 年最新 Docker 容器技术基础详细教程(更新中)

Docker 基本概述 Docker 是一个开源的应用容器引擎&#xff0c;它让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中&#xff0c;然后发布到任何流行的 Linux 或 Windows 操作系统的机器上&#xff0c;也可以实现虚拟化。容器是完全使用沙箱机制&#xff0c;相互之间…

【PickerView案例08-国旗搭建界面加载数据 Objective-C预言】

一、来看我们第三个案例 1.来看我们第三个关于PickerView的一个案例, 首先呢,我要问大家一下, 咱们这个是几组数据呢, 这是一个pickerView,只不过,它显示的是什么,一个界面, 前面两个案例,都是文字 这个案例,开始有图片了, 总结一下这三个案例: 1)第一个案例…

ClientDataSet运行中出现“ClientDataSet:dataset not in edit or insert mode”

在打开数据表文件&#xff0c;对ClientDataSet执行Append或Insert时&#xff0c;“ClientDataSet&#xff1a;dataset not in edit or insert mode”&#xff1a; 一、搜索问题 1、执行“显示数据后”&#xff0c;再执行Append&#xff0c;出错&#xff0c;说明ClientDataSet处…

07-Redis缓存设计

上一篇&#xff1a;06-Redis缓存高可用集群 1.缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c; 缓存层和存储层都不会命中&#xff0c; 通常出于容错的考虑&#xff0c; 如果从存储层查不到数据则不写入缓存层。 缓存穿透将导致不存在的数据每次请求都要到存储…

身份和访问管理解决方案:混合型IAM

对于依赖于本地 IT 基础结构和传统安全模型的组织&#xff0c;可以更轻松地验证和授权企业网络内的所有内容&#xff0c;包括设备、用户、应用程序和服务器。尝试从公司网络外部获取访问权限的用户使用虚拟专用网络 &#xff08;VPN&#xff09; 和网络访问控制 &#xff08;NA…

C# 嵌套循环

例子说明 循环遍历xml文件中的信息包括&#xff1a;节点名称&#xff08;一个&#xff09;&#xff0c;节点的串联值&#xff08;一个&#xff09;&#xff0c;节点的属性&#xff08;多个&#xff09; Xml文件 <?xml version"1.0" encoding"utf-8" …

djangoMTV初探

1.restful请求方式 一个视图对应多个操作&#xff08;增删改查&#xff09; 老的方式 views.py from django.shortcuts import render from django.http import HttpResponse,request,QueryDict, JsonResponse from myapp.models import User from django.views.generi…

zTasker—简洁易用强大的定时热键一体自动化工具,效率倍增器

软件名称 zTasker 应用平台 PC Windows7及以上 一句简介 市面上定时类软件很多&#xff0c;但无一例外功能都很单一&#xff0c;要完成不同的任务&#xff0c;需要不同的软件 市面上的热键软件&#xff0c;要么功能少&#xff0c;要么像是AutoHotKey这样对于一般用户太专业…

Flutter插件的制作和发布

Flutter制作插件有两种方式&#xff08;以下以android和ios为例&#xff09;&#xff1a; 目录 1.直接在主工程下的android和ios项目内写插件代码&#xff1a;2.创建独立Flutter Plugin项目&#xff0c;制作各端插件后&#xff0c;再引入项目&#xff1a;1. 创建Flutter Plugin…

《深入PostgreSQL的存储引擎:原理与性能》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…