HTML中的字符串转义

news2025/1/19 7:56:44

为什么要转义?

转义可以防止 xss 攻击。接下来,我们来看一下如何转义。

HTML Sanitizer API

Sanitizer 是浏览器自带的转义方法,在2021年初被提出,兼容性问题很大。

列举几个常用的 API: 

const $div = document.querySelector('div');
const user_input = `<em>Hello There</em><img src="" onerror=alert(0)>`;
const sanitizer = new Sanitizer() 

$div.setHTML(user_input, sanitizer); // <div><em>Hello There</em><img src=""></div>
const user_input = `<em>Hello There</em><img src="" onerror=alert(0)>`
const sanitizer = new Sanitizer()

sanitizer.sanitizeFor("div", user_input) // HTMLDivElement <div>

sanitizer.sanitizeFor("div", user_input).innerHTML // <em>Hello There</em><img src="">

自定义方法进行转义

这是一个简单的转义,只会把跟 html 有冲突的标签进行转义。

const escapeMap = {
  //'&': '&amp;',
  '<': '&lt;',
  '>': '&gt;',
  '"': '&quot;',
  "'": '&#x27;'
};
 
function escape(string = '') {
  const reg = new RegExp(`[${Object.keys(escapeMap).join('')}]`, 'g');
  return string.replace(reg, item => escapeMap[item]);
}

防止用户输入恶意篡改,Vue,JSX 默认情况下不用处理,插入的文本都是按照字符串处理。Vue中用 v-html 引入的内容要做转义。

第三方库转义

DOMPurify

转义库里面 GitHub star 最多,11.5k。

const user_input = '<em>Hello There</em><img src="" onerror=alert(0)>';
const cleanedHtml = DOMPurify.sanitize(user_input); // <em>Hello There</em><img src="">

还可以根据需要定义自己的白名单(允许的标签)和属性,比如字符串中包含自定义标签和属性时就需要用到。

js-xss

sanitize-html

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

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

相关文章

RTC实验

一、RTC简介 RTC(Real Time Clock)即实时时钟&#xff0c;它是一个可以为系统提供精确的时间基准的元器件&#xff0c;RTC一般采用精度较高的晶振作为时钟源&#xff0c;有些RTC为了在主电源掉电时还可以工作&#xff0c;需要外加电池供电BCD码&#xff0c;四位二进制表示一位…

Cesium--一些实验过程中的效果记录

1.一种反射效果&#xff1a; 片元着色器代码 fragmentShaderSource:in vec3 v_positionMC;in vec3 v_positionEC;in vec2 v_st;void main(){czm_materialInput materialInput;vec3 normalEC normalize(czm_normal3D * czm_geodeticSurfaceNormal(v_positionMC, vec3(0.0), ve…

从零开始,外贸邮件营销如何做?

邮件营销是外贸企业开发新用户和维系老客户非常有效的方法之一&#xff0c;因其操作方便快捷、成本低廉且精准投放的特性&#xff0c;已成为外贸行业的必备营销手段。但如何才能利用好邮件营销&#xff0c;让邮件营销的作用发挥到最大呢&#xff1f;今天U-Mail李工就跟大家分享…

Neo4j的使用场景_以及Windows版Neo4j Community Server安装_欺诈检测_推荐_知识图谱---Neo4j图数据库工作笔记0003

可以看到使用场景,比如欺诈检测, 要建立图谱,才能进行,欺诈人员检测 可以看到图谱的各种应用场景 然后推荐引擎也需要,可以看到 在金融,旅行,求职招聘,保健,服务,媒体娱乐,都可以进行推荐 然后还有知识图谱 身份访问管理,这里,可以进行安全管理,可以挖掘出潜在关系,分析, 某…

【Nacos2.24持久化到Postgres数据库适配——详细版】

Nacos2.24持久化到Postgres数据库适配 前言步骤拉取源码添加依赖修改源码编译打包修改配置测试运行 参考 前言 公司基于springboot实现了一套单体框架&#xff0c;目前我负责搭建SpringCloud微服务框架&#xff0c;需要用到nacos&#xff0c;但是由于公司特殊性&#xff0c;na…

IntelliJ IDEA 2023.1 windows找不到文件‘chrome’

异常效果图 1、【打开设置】 2、 搜索【web brow】 3、 在桌面上找到常用的浏览器 例如我的edge-【右击】-【打开文件位置】-【找到目标】-【双击】-【ctrla全选】-【ctrlc复制】 4、修改正确的路径如下&#xff1a; 5、再次尝试打开【main.jsp】 浏览器正常显示&#xff01;…

十、接口(1)

本章概要 抽象类和方法接口创建 默认方法多继承接口中的静态方法Instrument 作为接口 接口和抽象类提供了一种将接口与实现分离的更加结构化的方法。 这种机制在编程语言中不常见&#xff0c;例如 C 只对这种概念有间接的支持。而在 Java 中存在这些关键字&#xff0c;说明…

SAP MM学习笔记23-购买发注的账户分配类型(勘定Category)

SAP中控制财务凭证过账科目的是 账号分配类型&#xff08;勘定Category&#xff09;栏目。 ・账号分配类型&#xff08;勘定Category&#xff09;有&#xff1a; 1&#xff0c;K 原价Center&#xff08;成本中心。用于消耗物料采购 的过账&#xff09; 2&#xff0c;E 得意先…

任我行CRM系统存在 SQL注入漏洞[2023-HW]

任我行CRM系统存在 SQL注入漏洞 一、 产品简介二、 漏洞概述三、 复现环境四、 漏洞复现小龙POC又是一通哈拉少 五、 修复建议 免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及…

嵌入式编译x264源码

x264下载地址:直接下载下来就行 1.解压缩到你的服务器上 2.准备编译 3.使用编译命令: ./configure --prefix../x264build --disable-asm --enable-shared --enable-static --hostarm-linux-gnueabihf --cross-prefixarm-linux-gnueabihf- --disable-opencl --enable-pic --di…

生成式AI颠覆传统数据库的十种方式

对于生成式AI的所有闪光点&#xff0c;这个新时代最大的转变可能深埋在软件堆栈中。AI算法正在不易觉察地改变一个又一个数据库。他们正在用复杂、自适应且看似更直观的AI新功能颠覆传统数据库。 目录 1、向量和嵌入 2、查询模型 3、建议 4、索引范例 5、数据分类 6、更…

开源数据库Mysql_DBA运维实战 (备份与还原)

Mysql数据库的备份与还原&#x1f343; 备份对于数据库而言是至关重要的。当数据文件发生损坏、MySQL服务出现错误、系统内核崩溃、计算机硬件损坏或者数据被误删等事件时&#xff0c;使用一种有效的数据备份方案&#xff0c;就可以快速解决以上所有的问题。MySQL提供了多种备…

Android平台内网RTSP网关和轻量级RTSP服务的区别和联系

技术背景 我们在对接轻量级RTSP服务的时候&#xff0c;遇到客户这样的使用场景&#xff1a;客户是用于车载自组网环境&#xff0c;确保多辆车之间可以相互看到对方的实时视频&#xff0c;以期可以了解到前方路况等关注的信息。 除了安卓自带摄像头的数据&#xff0c;还有车载…

Nacos权限认证

写在前面&#xff1a;各位看到此博客的小伙伴&#xff0c;如有不对的地方请及时通过私信我或者评论此博客的方式指出&#xff0c;以免误人子弟。多谢&#xff01;如果我的博客对你有帮助&#xff0c;欢迎进行评论✏️✏️、点赞&#x1f44d;&#x1f44d;、收藏⭐️⭐️&#…

ssm家政服务网站源码和论文

ssm家政服务网站源码和论文024 开发工具&#xff1a;idea 数据库mysql5.7 数据库链接工具&#xff1a;navcat,小海豚等 技术&#xff1a;ssm 摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必…

MYSQL 作业三

创建一个student表格&#xff1a; create table student( id int(10) not null unique primary key, name varchar(20) not null, sex varchar(4), birth year, department varchar(20), address varchar(50) ); 创建一个score表格 create table score( id int(10) n…

视频监控有哪些存储方式?安防监控应该如何选择存储模式?

视频监控系统涉及到大量的视频数据&#xff0c;需要对这些数据进行存储&#xff0c;以备日后查看或备份。视频监控的存储需求需要根据场所的实际情况进行选择&#xff0c;以保证监控数据的有效存储和日后的调阅、回溯。 当前视频监控的存储方式&#xff0c;通常有以下几种&…

手持两把锟斤拷,口中疾呼烫烫烫

大家好&#xff0c;我是可乐。 你是否有过在网页上看到一堆乱码&#xff0c;完全不知所云的经历&#xff1f;或者你试图打开一个文档&#xff0c;结果看到的都是奇怪的字符&#xff1f;这背后的元凶&#xff0c;很可能是字符编码。 这听起来像是一个高深的计算机名词&#xff…

介绍一些编程语言— Visual Basic 语言

介绍一些编程语言— Visual Basic 语言 Visual Basic 语言 简介 Visual Basic&#xff08;简称 VB&#xff09;是美国 Microsoft 公司于 1991 1991 1991 年研制的一种基于图形用户接口的 Windows 环境下的开发工具&#xff0c;是一种面向对象、可视化的新型开发工具&#x…

STM32 CubeMX (Freertos任务:创建、删除、挂起、恢复)

STM32 CubeMX Freertos STM32 CubeMX &#xff08;Freertos任务&#xff1a;创建、删除、挂起、恢复&#xff09; STM32 CubeMX Freertos前言一、STM32 CubeMX 配置时钟树配置使能串口&#xff0c;用于用于检查实验现象使用STM32 CubeMX 库&#xff0c;配置Freertos创建任务 二…