【Python常用库_1】网络安全清洁专家——Bleach

news2024/9/20 5:19:48

前言

😊😊😊欢迎来到本博客😊😊😊

🌟🌟🌟 本专栏主要分享常用的一些Python库,让工作学习事半功倍,适用于平时学习、工作快速查询等,随时更新。

😊😊😊 具体食用方式:可以点击本专栏【Python库快捷查找】–>搜索你要查询的Python库名,或者通过本篇博客查阅你想知道的知识,即可食用。

🎁🎁🎁支持:如果觉得博主的文章还不错或者您用得到的话,可以悄悄关注一下博主哈,如果三连收藏支持就更好啦!这就是给予我最大的支持!😙😙😙


文章目录

    • 学习目标
    • 一、认识Bleach库
    • 二、学习Bleach库
      • 2.1 安装Bleach库
      • 2.2 清理HTML
      • 2.3 标记(签)过滤
      • 2.4 属性过滤
      • 2.5 脱敏链接
      • 2.6 自定义过滤
    • 三、总结

学习目标

  • 认识Bleach库
  • 学习Bleach库
  • 使用(玩转)Bleach库

一、认识Bleach库

  跨站脚本攻击(XSS)是一种常见而严重的安全威胁,它允许攻击者将代码注入到网页上,这些代码可以被其他用户或访问者执行。XSS 攻击的目的通常是为了盗取用户数据、盗窃cookie、重定向用户或者操作用户浏览器。

  我们可以使用Python库Bleach,它能够删除或转义 HTML 中的非法字符和标签,防止网站受到 XSS(跨站脚本

  Bleach 不仅可以清理 HTML 文档,还能够对链接进行处理,检查是否是合法格式,并可以使用白名单来控制哪些 HTML 标签、属性是安全的,因此非常适合用于清洁用户输入的数据,确保网站安全。

  Bleach 是一个轻量级且易于使用的库,它能够直接与 HTML5lib 配合使用,在处理各种复杂并且不标准的 HTML 数据时更加得心应手。同时,它提供了丰富的自定义选项,以满足不同场景下的安全需求,非常适合在 Web 应用程序中使用。


二、学习Bleach库

2.1 安装Bleach库

  Bleach库的安装和其他库安装一样,用pip命令即可:

pip install bleach
pip install bleach -i https://pypi.tuna.tsinghua.edu.cn/simple  #清华源会更快

2.2 清理HTML

dirty_html = "<script>alert('XSS Attack!')</script><p>Clean HTML</p>"
clean_html = bleach.clean(dirty_html)
print(clean_html)

  解析: bleach 是一个用于清理 HTML 内容的库,它会将不被允许的标签和属性转义为 HTML 实体。例如,<script> 标签会被转义为 &lt;script&gt;,这可以防止这些标签被浏览器执行。<p> 标签被认为是安全的,所以它会被保留,但标签的尖括号也会被转义为 HTML 实体。

  因此,bleach.clean(dirty_html) 的输出是转义后的 HTML 内容,这样可以确保在显示时不会执行潜在的恶意脚本。转义后的 HTML 内容就是:

&lt;script&gt;alert('XSS Attack!')&lt;/script&gt;&lt;p&gt;Clean HTML&lt;/p&gt;

  bleach 将 <script> 标签和 </script> 标签转义成了 &lt;script&gt;&lt;/script&gt;,从而阻止了可能的 XSS 攻击。<p> 标签被保留,但同样也被转义了。

2.3 标记(签)过滤

  上面在清理时,将<p>也进行了转义,在bleach清理HTML过程中,可以允许某些特定的标签:

import bleach
dirty_html = "<script>alert('XSS Attack!')</script><p>Clean HTML</p>"
# 允许的 HTML 标签及熟悉列表
allowed_tags = ['p']
clean_html = bleach.clean(dirty_html, tags=allowed_tags, attributes=attributes)
print(clean_html)

  输出:

&lt;script&gt;alert('XSS Attack!')&lt;/script&gt;<p>Clean HTML</p>

  解析: 这样就只保留了标签<p>

2.4 属性过滤

  bleach 还可以过滤 HTML 标记的属性,只保留指定的属性:

import bleach
dirty_html1 = '<a href="javascript:alert(\'XSS\')">Link</a>'

clean_html = bleach.clean(dirty_html1, attributes={'a': ['href']})
print(clean_html)

  输出

<a>Link</a>

2.5 脱敏链接

  可以脱敏链接,确保它们的格式是有效的,并可以防止一些危险的 URL 协议:

import bleach
dirty_link = "Click here: <a href='javascript:evilFunction()'>Link</a>"
clean_link = bleach.linkify(dirty_link)
print(clean_link)

  输出:

Click here: <a href="javascript:evilFunction()" rel="nofollow">Link</a>

  解析: bleach.linkify() 识别到 <a> 标签后,它会保留链接,但会增加一个 rel="nofollow" 属性来防止搜索引擎跟踪此链接。尽管它不会直接移除 javascript:,但它会确保链接不会被轻易点击或执行恶意代码,会添加 rel="nofollow" 属性来降低潜在风险。

  为了防止潜在的 XSS 攻击,可以使用 bleach 的 clean 方法,并特别设置不允许 javascript: 协议,或者限制允许的链接协议。以下是一个使用 bleach.clean 的示例,它会移除或转义危险的链接:

import bleach

dirty_link = "Click here: <a href='javascript:evilFunction()'>Link</a>"
# 使用 bleach.clean 并限制允许的协议
clean_link = bleach.clean(dirty_link, tags=['a'], attributes={'a': ['href']}, protocols=['http', 'https', 'mailto'])
print(clean_link)

  输出:

Click here: <a>Link</a>

2.6 自定义过滤

from bleach.sanitizer import Cleaner
class MyFilter:
    def __call__(self, attrs, new=False):
        # 自定义过滤逻辑
        return attrs
my_filter = MyFilter()
cleaner = Cleaner(filters=[my_filter])

clean_html = cleaner.clean("<custom>Something</custom>")

  使用 Bleach 提供的 Cleaner 类和自定义的过滤器,可以创建自己的清洁流程。


三、总结

  Python Bleach 是一个强大的库,用于安全地处理 HTML 和文本数据,防止 XSS 和其他安全漏洞。

  在本文中,介绍了 Bleach 的基本用法,以及如何安全地处理 HTML。

  Bleach 库作为一个强大的 HTML 清洁和文本转义工具,提供了简单但又强大的接口,帮助开发者清除潜在的 Web 安全威胁,确保用户输入的数据不会造成破坏。

  通过使用 Bleach,可以更专注于创建出色的用户体验,而不必过度担心数据安全问题。


🚶🚶🚶 今天的文章就到这里啦~
喜欢的话,点赞👍、收藏⭐️、关注💟哦 ~

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

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

相关文章

CPP多态

目录 前言 多态的概念 多态的定义及实现 多态的构成条件 虚函数 虚函数的重写 虚函数重写的两个例外 C11 override 和 final 重载、覆盖(重写)、隐藏(重定义)的对比 抽象类 接口继承和实现继承 多态的原理 虚函数表 多态的原理 动态绑定与静态绑定 单继承和多继…

Aspose.PDF功能演示:在 C# 中将 JPG 图像合并为 PDF

Aspose.PDF 是一款高级PDF处理API&#xff0c;可以在跨平台应用程序中轻松生成&#xff0c;修改&#xff0c;转换&#xff0c;呈现&#xff0c;保护和打印文档。无需使用Adobe Acrobat。此外&#xff0c;API提供压缩选项&#xff0c;表创建和处理&#xff0c;图形和图像功能&am…

网安新声 | 智能家居时代,用户隐私谁来守护

网安加社区【网安新声】栏目&#xff0c;汇聚网络安全领域的权威专家与资深学者&#xff0c;紧跟当下热点安全事件、剖析前沿技术动态及政策导向&#xff0c;以专业视野和前瞻洞察&#xff0c;引领行业共同探讨并应对新挑战的策略与可行路径。 近日&#xff0c;某知名品牌旗下的…

【初领妙道】一眼学会Redis之重点大纲

重点大纲 1. Redis基础2. Redis核心功能3. 高级特性4. 性能优化5. 高可用性6. 安全性7. 实战应用8. 监控与运维总结 Redis&#xff08;Remote Dictionary Server&#xff09;是一款开源的、高性能的键值存储系统&#xff0c;它支持多种数据结构&#xff0c;如字符串、列表、集合…

STL算法详细解剖——单纯数据处理函数

STL算法详细解剖——单纯数据处理函数 前言1.replace 替代函数值2.replace_copy 替代函数值3.replace_if 替代函数值4.replace_copy_if 替代函数值5.reverse 颠倒排序6.reverse_copy 颠倒排序7.rotate 将元素按某个中间值进行互换7.1.rotate 将元素按某个中间值进行互换8.roate…

hex文件转bin文件

一、简介 在进行MCU开发时,经常需要使用到hex和bin文件,这里总结几种hex转bin的方法。 二、MDK转换 很多的MCU开发,都会用到MDK,而MDK自身是可以执行批处理,来完成hex到bin文件的直接转化的。 见如下指令: fromelf --bin -o ..\..\output\@L.bin #L 这里解释一下上面指令…

音频在线转换mp3:学会这2个方法,拿捏音频转换

如今音频文件的格式转换变得越发重要。你是否曾因为无法在设备上播放特定格式的歌曲而感到困扰&#xff1f;你是否希望将原有的音频文件转换为更常见、更通用的mp3格式&#xff0c;以便在不同设备上畅快地品味音乐&#xff1f; 为了音频文件的顺利播放&#xff0c;我们需要学会…

SpringBoot 增量部署发布

一、背景介绍 由于项目依赖的jar越来越多&#xff0c;Springboot默认的打包方式是将整个项目打包成一个jar包&#xff0c;每次发布时&#xff0c;打包后的jar越来越大&#xff0c;更新一个很小的功能&#xff0c;需要将整个jar上传运行。这样效率太低了&#xff0c;考虑实现每…

2024年百元蓝牙耳机推荐有哪些?四款年度热门机型评测推荐

随着蓝牙技术的不断成熟和普及&#xff0c;蓝牙耳机已经悄然成为我们日常生活中不可或缺的一部分&#xff0c;特别是在2024年&#xff0c;市面上涌现出了许多性价比极高的百元蓝牙耳机&#xff0c;那么在众多的蓝牙耳机里2024年百元蓝牙耳机推荐有哪些&#xff1f;为了解决大家…

【Java】实体类Javabean

文章目录 前言一、实体类Javabean是什么&#xff1f;二、代码总结 前言 记录实体类的基本语法 一、实体类Javabean是什么&#xff1f; 其实就是一种特殊形式的类&#xff0c;这种类特殊点在于&#xff1a; 1、这个类中的成员变量都要私有&#xff0c;并且要对外提供相应的ge…

【STM32+HAL库】---- 硬件IIC驱动0.96OLED

硬件开发板&#xff1a;STM32G0B1RET6 软件平台&#xff1a;cubemaxkeilVScode内容原著声明 代码借鉴学习于以下文章&#xff1a; STM32 使用硬件IIC驱动0.96寸4针IOLED显示器&#xff08;HAL库&#xff09; 1 新建cubemax工程 1.1 配置系统时钟RCC 1.2 配置引脚 1.3 导出工…

ICM20948 DMP代码详解(1)

序言 接触Invensense的芯片这已经是第三次了。2015年在第二空间的时候第一次接触它的芯片&#xff0c;那时候是MPU9250&#xff1b;2021年的时候在智橙动力再一次接触到了MPU6050&#xff0c;那个时候用到了其中的DMP&#xff1b;这次接触的是ICM20948&#xff0c;按目前笔者理…

吃多一时爽,吃少活更长!

美国索尔克生物研究所Belmonte研究团队和中科院研究团队在Cell上发表题为Caloric Restriction Reprograms the Single-Cell Transcriptional Landscape of Rattus Norvegicus Aging的研究内容&#xff0c;比较了摄入热量少30%的老鼠和正常饮食的老鼠之间的区别&#xff0c;发现…

黑马点评7——达人探店

文章目录 发布探店笔记查看探店笔记点赞功能点赞排行榜功能 发布探店笔记 这个其实比较简单&#xff0c;就是把笔记保存到数据库tb_blog中去 PostMappingpublic Result saveBlog(RequestBody Blog blog) {// 获取登录用户UserDTO user UserHolder.getUser();blog.setUserId(u…

python OpenCV的羽化融合图像

1. 读入两幅图像,苹果和橘子 2. 构建苹果和橘子的高斯金字塔&#xff08;6 层&#xff09; 3. 根据高斯金字塔计算拉普拉斯金字塔 4. 在拉普拉斯的每一层进行图像融合&#xff08;苹果的左边与橘子的右边融合&#xff09; 5. 根据融合后的图像金字塔重建原始图像。 impor…

YOLOv5改进 | 模块缝合 | C3 融合REPVGGOREPA提升检测性能【详细步骤 完整代码】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv5入门 改…

数字与文字组合商标,有一个元素近似整体驳回!

经常遇到有网友问驳回复审要不要做复审&#xff0c;其实判断分析好&#xff0c;大多数商标驳回后不值得做复审&#xff0c;也可以省掉不必要的费用&#xff0c;最近有个网友联系到普推知产商标老杨&#xff0c;咨询一个驳回复审的问题。 这个网友的商标是数字和文字组合&#…

若依系统的学习

若依环境 介绍 ‌若依是一款快速开发平台(低代码)&#xff0c;用于快速构建企业级后台管理系统&#xff0c;它提供了许多常用的功能模块和组件&#xff0c;包括权限管理、代码生成、工作流、消息中心等 官方地址: https://www.ruoyi.vip/ ‌基于Spring Boot和Spring Cloud‌…

【分享】Excel表格设置“打开密码”的两种方法

在工作中&#xff0c;Excel文件通常包含敏感数据&#xff0c;出于安全性考虑&#xff0c;给文件设置打开密码是非常有效的方式。接下来&#xff0c;小编给大家介绍两种方法&#xff0c;帮助你轻松为Excel文件设置密码。 方法一&#xff1a;在Excel表里设置“打开密码” 这是Ex…

2024AEI:Cross-Supervised multisource prototypical network

目录 研究动机 研究数据集 研究方法 研究动机 该论文是为了解决以轴承故障诊断为背景的多源域小样本域自适应问题而提出的。文中有提及到实际的工业生产中&#xff0c;存在多源域缺少足够的样本标签数据支撑一般的多源域域自适应&#xff08;MSDA&#xff09;方法的情况&…