django-设置X-Frame-Options响应头防止点击劫持攻击

渗透测试成长篇-点击劫持漏洞 1.前言 点击劫持就是一种视觉上的欺骗手段,攻击者使用一个透明的、不可见的iframe,覆盖在一个网页上,然后诱使用户在该网页上进行操作,此时用户在不知情的情况下点击了透明的iframe页面。通过调整iframe页面的位置,可以诱使用户恰好点击在iframe页面的一些功能性按钮上,攻击者常常配合社工手段完成攻击。(一般能被劫持就是网站缺少X-FRAME-OPTIONS) ************ 点击劫持一般在渗透测试中比较常见 2.过程 如何测试,有两种方法,今天就讲一种最简单常用的方式(bur. 阅读详情

一、点击劫持

当恶意网站欺骗用户点击另一个网站的隐藏元素时,就会发生这种类型的攻击,该元素已被加载到一个隐藏的框架或 iframe 中。

二、点击劫持的例子

假设一家在线商店有一个页面,登录的用户可以点击“立即购买”来购买商品。用户为了方便,选择了保持登录商店。攻击者网站可能会在自己的一个页面上创建一个“I Like Ponies”按钮,并在一个透明的 iframe 中加载商店的页面,使“立即购买”按钮无形中覆盖在“I Like Ponies”按钮上。如果用户访问攻击者的网站,点击“I Like Ponies”将导致无意中点击“立即购买”按钮,并在不知情的情况下购买该商品。

三、防止点击劫持

现代浏览器支持X-Frame-OptionsHTTP 头,它表明是否允许在框架或 iframe 中加载资源。

X-Frame-Options参数值:

  • DENY:不能被嵌入到任何iframe或者frame中。
  • SAMEORIGIN:页面只能被本站页面嵌入到iframe或者frame中
  • ALLOW-FROM uri:只能被嵌入到指定域名的框架中

Django 提供了一些方法来在你的网站的响应中包含这个头:

  • 一个在所有响应中设置头的中间件。
  • 一组可用于覆盖中间件或仅为某些视图设置头的视图装饰器。

X-Frame-OptionsHTTP 头只有在响应中还没有出现的情况下,才会被中间件或视图装饰者设置。

四、在django中配置防止点击劫持

1、为所有的响应设置

要为你的网站的所有响应设置相同的 X-Frame-Options 值,把 'django.middleware.clickjacking.XFrameOptionsMiddleware' 配置到配置文件中的MIDDLEWARE中间件中

​

默认情况下,该中间件将为每个传出的响应设置 X-Frame-Options​​​​​​​头为DENY。如果你想为这个头设置任何其他的值,可以在配置文件中设置其他的值

X_FRAME_OPTIONS = 'SAMEORIGIN'

在使用中间件时,有些视图可能 不希望 设置 X-Frame-Options​​​​​​​头。对于这些情况,你可以使用一个视图装饰器,告诉中间件不要设置头:

from django.shortcuts import render

# Create your views here.
from django.views import View

from django.views.decorators.clickjacking import xframe_options_exempt


@xframe_options_exempt
def SessionJackView(request):
    return render(request, 'sessionjack.html')

测试 :

后端返回的页面

​

前端嵌入页面 

​

 设置为

X_FRAME_OPTIONS = 'SAMEORIGIN'

​ 

 设置为

X_FRAME_OPTIONS = 'ALLOW-FROM uri'

 使用xframe_options_exempt装饰器

装饰器和中间件一起使用,装饰器会覆盖掉中间件以及自己配置的参数值,并且使用该装饰器后.

@xframe_options_exempt
def SessionJackView(request):
    return render(request, 'sessionjack.html')

 

 2、为每个视图设置 X-Frame-Options

要在每个视图上设置 X-Frame-Options 头,Django 还提供了这些装饰器:

五、 X-Frame-Options的源码解析

django.middleware.clickjacking.XFrameOptionsMiddleware

低危漏洞修复——点击劫持X-Frame-Options响应头缺失 X-Frame-Options响应头缺失,导致攻击者使用一个或多个透明的iframe覆盖在正常网页上,诱使用户在网页上进行操作,当用户在不知情的情况下点击透明的iframe页面时,用户的操作已被劫持到攻击者事先设计的恶意按钮或链接上。 阅读详情

相关推荐

Django安全配置实战:X-Frame-Options的三种设置方式及其应用场景

本文深入解析了Django中X-Frame-Options响应头的三种设置方式:DENY、SAMEORIGIN及已废弃的ALLOW-FROM,并对比了其应用场景与安全考量。针对现代Web开发,重点介绍了使用Content-Security-Policy的frame-ancestors指令作为更优替代方案,并提供了视图级装饰器、自定义中间件等精细化配置方法,帮助开发者在防御点击劫持攻击与满足业务嵌入需求之间取得平衡。

root9的博客 454

springBoot springSecurty导致的x-frame-options值为deny问题及跨域问题处理方法

1.问题解释说明: X-Frame-OptionsHTTP响应头是用来给浏览器 指示允许一个页面 可否在<frame>,<iframe>,<embed>或者<object>中展现的标记。站点可以通过确保网站没有被嵌入到别人的站点里面,从而避免被攻击。 X-Frame-Options有三个可能的值: X-Frame-Option...

txp1993的专栏 1万+

Python实战Clickjacking:从攻击原理到自动化检测与防御

Clickjacking(点击劫持)是一种利用视觉欺骗的Web安全攻击,其核心在于浏览器同源策略在视觉渲染层面的失效。攻击者通过透明iframe等技术,将恶意页面覆盖在目标按钮之上,诱导用户在不知情下执行非本意操作。这种攻击对金融交易、社交互动等需要用户确认的场景构成严重威胁。从技术实现看,它常与CSRF(跨站请求伪造)结合,利用用户的登录态进行隐蔽攻击。在工程实践中,防御Clickjacking主要依赖服务器端设置HTTP响应头,如X-Frame-Options和Content-Security-Poli

404

Django的X-Frame-Options设置

Django的X-Frame-Options设置1. 事件起因2. 有关X-Frame-Options2.1 什么是X-Frame-Options2.2 X-Frame-Options选项3.Django有关配置3.1 Django默认的配置3.2 Django总体配置3.3 指定的网页配置4. 参考内容 1. 事件起因 事件的起因是这样的,我在使用Django服务的时候,想在一个已经存在某个按钮...

cn_newer 1万+

HTTP请求头安全攻防实战:从XSS/CSRF到CSP/HSTS的深度解析

HTTP协议作为Web通信的基石,其请求头不仅是数据交换的信使,更是安全攻防的关键战场。从原理层面看,请求头定义了客户端与服务器交互的语义,如User-Agent标识客户端环境,Referer/Origin标记请求来源,Content-Type指定数据格式。这些基础字段若被恶意利用,会直接引发跨站脚本(XSS)、跨站请求伪造(CSRF)等核心Web安全漏洞。在工程实践中,通过正确配置安全响应头,如内容安全策略(CSP)和HTTP严格传输安全(HSTS),能构建主动防御体系。CSP通过白名单机制控制资源加载,

328

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

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

渗透之路,攻防之间皆学问 3748

158.Clickjacking点击劫持攻击实现和防御措施

clickjacking攻击: clickjacking攻击又称为点击劫持攻击,是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段。 clickjacking攻击场景: 用户进入到一个网页中,里面包含了一个按钮(查看照片),但是这个按钮上面加载了一个透明的iframe标签,这个iframe标签加载了另外一个网页,并且他将这个网页的某个按钮和网页中的按钮(查看照片)重...

zjy123078_zjy的博客 681

手把手教你用EGM96模型校正DEM数据(含在线工具推荐)

本文详细介绍了如何使用EGM96地球重力场模型校正DEM数据中的高程偏差。通过对比WGS84椭球面与大地水准面的差异,解释了校正原理,并提供了从在线工具快速验证到Python脚本批量处理的全流程实战指南,帮助GIS开发者和数据分析师确保高程数据基准一致,提升空间分析精度。

ttt77的博客 1008

Django middleware django.middleware.clickjacking.XFrameOptionsMiddleware

from django.conf import settings class XFrameOptionsMiddleware(object): """ Middleware that sets the X-Frame-Options HTTP header in HTTP responses. Does not set the header if it's alread

userguanguan的专栏 4968

【OpenCV】手眼标定实战:从原理到calibrateHandEye的完整实现

本文详细解析了机器人视觉中的手眼标定原理与实战,重点介绍了如何使用OpenCV的calibrateHandEye函数实现从数据采集到结果验证的完整流程。文章深入剖析了AX=XB核心方程,区分了眼在手上与眼在手外两种配置,并提供了详细的代码示例与避坑指南,帮助开发者精准建立相机与机械臂末端的坐标转换关系,是机器人精准抓取的关键技术。

weixin_29046611的博客 509

桁架 拓扑优化 matlab程序_拓扑优化在结构轻量化及板壳加筋肋最优布置的应用...

1 拓扑优化简介材料的有效利用一直都是人类追求的目标,也是许多研究领域不变的话题,并伴随着结构优化理论和方法的产生而发展。结构优化设计通常分为三个层次:(1)拓扑优化:在一个确定的连续区域内寻求结构内部非实体区域位置和数量的最佳配置,寻求结构中的构件布局及节点联结方式最优化,使结构能在满足应力、位移等约束条件下,将外载荷传递到结构支撑位置,同时使结构的某种性态指标达到最优;(2)形状优化:指在保持...

weixin_39525355的博客 1877

django3集成django-mdeditor报 ‘X-Frame-Options‘ 错误

背景 使用django3进行开发时,由于项目前端页面使用iframe框架,浏览器错误提示信息如下: Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'deny'根据提示信息发现是因为X-Frame-Options=deny导致的。 X-Frame-Options是什么? The X-Frame-Options HTTP 响应头是用来给浏览器 指示允许一个页面 可否在 <frame>, &l

轻编程的博客 792

宜搭,高级认证实操2,FaaS连接器指导教程

找到FaasEntry.java将如下代码整体替换,注意引包。如图所示在util下新建EDSUtil.java代码如下。回到连接器界面点击右上角测试-->测试。连接器工厂-->新建FaaS连接器。保存-->前往云IDE开发。返回如图所示代码,部署成功。

2301_80286061的博客 3343

从安全到兼容:Django中X-Frame-Options的全面配置指南(含SAMEORIGIN实战)

本文深入探讨了Django中X-Frame-Options的配置方法,从基础解析到实战应用,帮助开发者在安全与兼容性之间找到平衡。重点介绍了SAMEORIGIN等配置模式,以及如何在Django中实现全局和视图级别的精细控制,同时对比了现代CSP安全策略的应用。

elastic6hunter的博客 834

Mmdetection用自己的数据集训练Mask_RCNN

将自己数据的标签写入配置文件,在data前一行添加自己的标签列表,同时在train,val,test中添加classes = classes,如果不添加,模型就会默认读取coco原始数据集的80个标签,与自己的数据集对应不上就会报错。2.打开第二个文件coco_instance.py,将data_root路径改为你自己coco数据集的位置(注意一定要以/结尾),修改输出图片尺寸(根据自己的数据集决定)3.将标注完的数据转为Mask_rcnn训练所需的数据集格式。4.将数据集放到训练代码文件夹中。

m0_64298393的博客 3474

低功耗设计-Power Switch

power gating与power switch cell

m0_61544122的博客 1万+

django3 Refused to display ‘url‘ in a frame because it set ‘X-Frame-Options‘ to ‘deny‘

django3 Refused to display 'url' in a frame because it set 'X-Frame-Options' to 'deny' 背景 使用django3进行开发时,由于项目前端页面使用iframe框架,浏览器错误提示信息如下: Refusedtodisplay'url'inaframebecauseitset'X-Frame-Options'to'deny' 根据提示信息发现是因为X-Frame-Options=deny导致的...

陈新明博客 1744

WOFOST作物模型(1):PCSE环境配置

get_summary_output() 方法通常用于在 PCSE 模拟过程结束后,获取模拟结果的摘要信息,例如模拟期间的总产量、总水分需求等。它可以提供对模拟结果的快速总结,方便用户进行后续的分析和处理。用.get_output来获取过程参数,并将这些参数转为dataframe显示。用run_till_terminate()代表终止。安装好之后,打开jupyter notebook。也可以指定运行时间,并获取最后一天的参数。首先还是打开之前建好的gee虚拟环境。

所有专家都曾始于新手 681

解决 Refused to display in a frame because it set ‘X-Frame-Options‘ to ‘deny‘.问题

Code Is Never Die ! 问题: 在做iframe预览PDF文件时,虽然nginx配置了X-Frame-Options SAMEORIGIN,但在iframe中仍然获取不到内容。 介绍:X-Frame-Options HTTP 响应头是用来给浏览器指示允许一个页面可否在 frame , iframe 或者 object 中展现的标记。网站可以使用此功能,来确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持 (clickjacking) 的攻击。 只有当用户使用支持X-Frame-

rainux 7773

基于51单片机的电子记分牌的设计

基于51单片机的电子记分牌的设计 电子记分牌基于51单片机的电子记分牌的设计摘要1 引言2 总体设计方案2.1 设计思路(1)设计要求(2)设计思路(3)设计方案2.3综合设计方框图(1)硬件设计框图(2)软件设计3 设计原理分析3.1 电源、复位、下载电路的设计(见图1、2、3)3.2 时钟电路的设计3.3 矩阵键盘电路的设计3.4 数码管显示电路设计4程序代码 摘要 本设计为电子记分牌设计,是以STC89C52芯片为核心,辅以必要电路设计进行的。用4位LED七段数码管显示比赛两方的分数(每方分数用2位

行走的皮卡丘 2037

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

django-iframe-子框架包含-拒绝问题-in a frame because it set ‘X-Frame-Option

如果框架拒绝显示,一般是安全设置问题或者跨域问题。

插件开发 502

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

取消button的点击效果_0基础掌握Django框架(43)点击劫持攻击

为了更好的学习效果,请搭配视频教程一起学习:Django零基础到项目实战 - 网易云课堂​study.163.comclickjacking攻击:clickjacking攻击又称作点击劫持攻击。是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段。clickjacking攻击场景:场景一:如用户收到一封包含一段视频的电子邮件,但其中的“播放”按钮并不会真正播放视频,而...

weixin_39648297的博客 118

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Django安全头终极配置指南:30分钟搞定Web应用安全防护

Django作为一款注重安全的Web框架,内置了强大的安全头配置功能,帮助开发者轻松抵御常见的Web安全威胁。本文将带你快速掌握Django安全头的完整配置方案,通过简单几步即可显著提升Web应用的安全性。 ## 为什么安全头配置至关重要? 在当今网络环境中,Web应用面临着XSS、CSRF、点击劫持等多种安全威胁。安全头(Security Headers)是浏览器与服务器之间的安全通信协议,

gitblog_00381的博客 692

【补充】Django框架之IFrame中的跨域问题

【一】iframe 中的跨域问题详解 在网页开发中 浏览器会应用跨域安全策略,限制不同域名之间的交互。 跨域问题指的是如果一个网页的脚本尝试访问另一个域名下的资源或与其通信时,浏览器会拒绝这样的请求。 其中,使用 <iframe> 标签嵌套其他网页是一种常见的前端技术。 然而,由于 <iframe> 中的内容与包含它的页面处于不同域名下,可能会导致跨域问题。 下面...

Chimengmeng的博客 2394

Clickjacking Protection

The clickjacking middleware and decorators provide easy-to-use protection against clickjacking. This type of attack occurs when a malicious site tricks a user into clicking on a concealed element o

djskl的专栏 1283
上一篇: go学习(6)、定义变量和定义指针变量的区别
下一篇: Django-离线使用
simpleyako
博客等级 码龄8年 26粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值