【Django】Clickjacking点击劫持攻击实现和防御措施

server/2025/2/13 1:50:31/

Clickjacking点击劫持

  • 1、clickjacking攻击
  • 2、clickjacking攻击场景

1、clickjacking攻击

clickjacking攻击又称为点击劫持攻击,是一种在网页中将恶意代码等隐藏在看似无害的内容(如按钮)之下,并诱使用户点击的手段。

2、clickjacking攻击场景

用户进入到一个网页中,里面包含了一个按钮(查看照片),但是这个按钮上面加载了一个透明的iframe标签,这个iframe标签加载了另外一个网页,并且他将这个网页的某个按钮和网页中的按钮(查看照片)重合,所以你在点击按钮(查看照片的时候)实际上点的是通过iframe加载的另外一个网页的按钮,比如我现在有一个csdn的用户账号,现在想要用户点击关注。那么我们就可以准备以下页面:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Clickjacking</title><style>iframe {width: 100%;height: 100%;display: block;position: absolute;  /*指定iframe和button为绝对定位*/z-index: 20;  /*指定在垂直方向上的高低*/opacity: 0.01;/*指定透明度*/<!--注意,iframe的透明度不能设置为0,如果设置为0的话,就不能接受任何的点击事件了-->}button {position: absolute;left: 40px;top: 65px;z-index: 10;}</style>
</head>
<body>
<h2>哇塞,这张照片里怎么会有我!快来看看有没有你吧!</h2>
<button>查看照片</button>
<iframe src="https://blog.csdn.net/zjy123078_zjy/" frameborder="0"></iframe>
</body>
</html>

clickjacking防御:我们可以设置我们的网页不允许使用iframe被加载到其他网页中就可以避免这种情况了,我们可以通过在响应头中设置X-Frame-Options来设置这种操作,X-Frame-Options可以设置以下三个值:

  1. DEBY:不允许任何网页使用iframe加载我这个页面。
  2. SAMEORIGIN:只允许在相同域名(也就是自己的网站)下使用iframe加载这个页面。
  3. ALLOWED-FROM origin: 允许任何网页通过iframe加载我这个网页。


    在Django中,使用中间件django.middleware.clickjacking.XFrameOptionsMiddleware可以帮我们堵上这个漏洞,这个中间件设置了一个X-Frame-Option为DENY,也就是不允许任何网页使用iframe加载这个网页,这样就可以避免其他的别有用心的网页去通过iframe加载了。

    我们可以查看一下网页源代码,如下:
python">class XFrameOptionsMiddleware(MiddlewareMixin):"""Set the X-Frame-Options HTTP header in HTTP responses.Do not set the header if it's already set or if the response containsa xframe_options_exempt value set to True.By default, set the X-Frame-Options header to 'SAMEORIGIN', meaning theresponse can only be loaded on a frame within the same site. To prevent theresponse from being loaded in a frame in any site, set X_FRAME_OPTIONS inyour project's Django settings to 'DENY'."""def process_response(self, request, response):# Don't set it if it's already in the responseif response.get('X-Frame-Options') is not None:return response# Don't set it if they used @xframe_options_exemptif getattr(response, 'xframe_options_exempt', False):return responseresponse['X-Frame-Options'] = self.get_xframe_options_value(request,response)return responsedef get_xframe_options_value(self, request, response):"""Get the value to set for the X_FRAME_OPTIONS header. Use the value fromthe X_FRAME_OPTIONS setting, or 'DENY' if not set.This method can be overridden if needed, allowing it to vary based onthe request or response."""return getattr(settings, 'X_FRAME_OPTIONS', 'DENY').upper()

所以,在我们使用django创建项目的时候,默认的情况下,Django就会默认的帮我们定义一个处理“点击劫持攻击”的中间件,默认情况下就是开启的


http://www.ppmy.cn/server/141349.html

相关文章

零钱兑换(DP)

给你一个整数数组 coins &#xff0c;表示不同面额的硬币&#xff1b;以及一个整数 amount &#xff0c;表示总金额。 计算并返回可以凑成总金额所需的 最少的硬币个数 。如果没有任何一种硬币组合能组成总金额&#xff0c;返回 -1 。 你可以认为每种硬币的数量是无限的。 示…

Eclipse下载与安装

发现一篇好文章&#xff0c;适合小白下载eclipse 链接&#xff1a;eclipse下载与安装&#xff08;汉化教程&#xff09;超详细-CSDN博客

虚拟化技术在数据中心中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 虚拟化技术在数据中心中的应用 虚拟化技术在数据中心中的应用 虚拟化技术在数据中心中的应用 引言 虚拟化技术概述 定义与原理 发…

shell基础

一、理解bash基础 默认的Linux shell——Bash&#xff08;Bourne Again SHell&#xff09;可以通过命令控制系统&#xff0c;执行文件操作&#xff0c;或者启动应用程序。它可以在命令行上交互式使用&#xff0c;或者你可以创建一个包含多个shell命令的文件&#xff0c;并像启…

ubuntu22.04 密钥存储在过时的 trusted.gpg 密钥环中

ubuntu22.04 密钥存储在过时的 trusted.gpg 密钥环中 使用 sudo apt update 命令时&#xff0c;会提示密钥存储在过时的 trusted.gpg 密钥环中&#xff0c;具体提示内容如下&#xff1a; W: https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/dists/jammy/InRelease: 密钥…

梧桐数据库聚合函数使用举例

在数据分析和数据库管理中&#xff0c;聚合函数是一类非常重要的工具&#xff0c;它们能够对数据集进行计算并返回单个结果。梧桐数据库提供了丰富的聚合函数&#xff0c;这些函数可以帮助我们快速地对数据进行汇总、分析和处理。本文将介绍梧桐数据库中一些常用的聚合函数及其…

中心极限定理的三种形式

独立同分布的中心极限定理&#xff1a; 设 X 1 , X 2 , … , X n X_1, X_2, \ldots, X_n X1​,X2​,…,Xn​是独立同分布的随机变量序列&#xff0c;且 E ( X i ) μ E(X_i) \mu E(Xi​)μ&#xff0c; D ( X i ) σ 2 > 0 D(X_i) \sigma^2 > 0 D(Xi​)σ2>0存在…

android studio 配置过程

Android studio版本&#xff1a;Android Studio Ladybug | 2024.2.1 windows 10 x64 关键问题解决方法&#xff1a; 1.设置代理&#xff1a; 退出首次配置&#xff0c;进入ide&#xff08;必要时新建工程&#xff09;然后&#xff1a; 然后重启ide 等待下载完成。 代理地…