稀里糊涂的转义

一、前言

前段时间挖机ERP系统出现一个问题,表单录入客户名称是 L & Q International Trading Limited,然后页面展示变成 L & Q International Trading Limited,即字符 &变成了&。

二、为什么要转义

&amp;是&在HTML中的转义,那为什么要进行转义呢,因为在HTML中有些字符是预留的(注:每种语言都有预留关键字),比如在HTML中不能直接使用小于号(<)、大于号(>)等,因为浏览器会认为它们是HTML标签,如果希望正确显示预留字符,我们必须在HTML代码中使用对应的字符实体。

注:上面这段话不一定对,估计以前浏览器是存在这个问题,现在浏览器可能兼容性做得比较完善,我测试了一下是能够直接用 < 输出的,但空格是不行,你输入多个空格页面显示时会截取掉只留下一个空格。

&其实并不是HTHL标签中的关键字,但&gt;&lt;这些用到它,所以它也必须进行转义。

三、问题排查

1、确认&amp;是在前端还是后端造成的

开始是怀疑前端代码做了处理,直接用postman提交发现在后端接收到的数据也会变成了 &amp;这就排除掉前端的问题,前端Get提交的数据可能会做URLEncode,但要搞清楚URLEncode编码和HTML标签转义是两回事,POST过来JSON数据一般理论上是不会被改变。

结论:后端问题

2、确认后端哪个环节的问题

怀疑后端程序基础框架中有代码进行转义,直接创建一个最简单的SpringBoot项目(与工程版本一致),用postman提交含&的字符串,后端接收到的数据是正常的,这说明与SpringBoot框架不相关。

结论:后端拦截器问题。

3、后端拦截器代码跟踪

发现工程中引入了XssFilter,会对HTML标签转义,对脚本进行删除等。

这样被过转义后,存入数据库的就是  L &amp; Q International Trading Limited。

4、前端展示

Vue页面上使用双花括号 {{ }}、或Element-UI 的 el-table会将HTML(含转义后的实体)转换为纯文本进行输出。所以就造成了这个问题。

5、解决方案

如果明确了后端使用了XssFilter进行了过滤(会删除掉脚本),前端vue可以直接使用 v-html来显示 ,这样就不会有&amp;,但el-table中又该如何处理呢(好像只能和solt去处理了)?其实我看了代码,发现我们业务类中加了以下代码。

req.setName(StringEscapeUtils.unescapeHtml4(req.getName()));

这个是能保证页面上不再出现&amp;但这样做XssFilter的意义在哪里呢?

注:一般ERP这种ToB的项目需要内部账号登录才能使用,其实没有什么必要做XSS安全校验

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

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

相关文章

嵌入式C语言自我修养《GNU C编译器扩展语法》学习笔记

目录 一、C语言标准和编译器 二、指定初始化 三、宏构造“利器”&#xff1a;语句表达式 四、typeof与container_of宏 五、零长度数组 六、属性声明&#xff1a;section 七、属性声明&#xff1a;aligned 一、C语言标准和编译器 C语言标准的发展过程&#xff1a; ●…

【C++ 学习】字符串(指针形式和数组形式)

字符串 字符串基本知识 字符串是以空字符&#xff08;\0&#xff09;结尾的char类型数组。如下程序&#xff0c;给出了字符串的声明定义方式。 void test(void) {char words[MAXLENGTH] "I am a string in an array.";const char* pt1 "something is point…

哈希表的实现(c语言)

实现哈希表的方法有两种方法&#xff1a;开放寻址法 、链地址法 开放寻址法&#xff1a;在开放寻址法中&#xff0c;所有的元素都存储在哈希表的数组中&#xff0c;冲突发生时会探测下一个可用的位置&#xff0c;直到找到一个空闲的位置。这种方法保持了元素的顺序&#xff0c;…

基于观察者模式设计的框架-REB,使代码模块化

设计模式里面的观察者模式&#xff0c;一直是作者想去设计一套框架来阐述这一个模式&#xff0c;因此REB(Rice Event Broker)就是为了完成观察者模式的一个框架。 观察者模式 聊REB之前&#xff0c;我们聊聊观察者模式带给我们特性&#xff0c;他能对我们框架设计提供什么好处…

双十一期间如何抢占流量,打造品牌爆款产品

进入10月末&#xff0c;也就进入了电商行业的大促流量红利期。如何提前规划大促期间&#xff0c;店铺流量扩张的计划&#xff0c;提前抢占流量&#xff0c;是每一个品牌方都需要考虑的问题。今天为大家分享下双十一期间如何抢占流量&#xff0c;打造品牌爆款产品&#xff01; 一…

Nginx请求参数解析

例&#xff1a; $arg_token 取的就是 uri?args 中 tokenxxx 的部分 $arg_PARAMETER #这个变量包含GET请求中&#xff0c;如果有变量PARAMETER时的值。$args #这个变量等于请求行中(GET请求)的参数&#xff0c;例如foo123&barblahblah;$binary_remote_addr #二进制的客户地…

JNI相关问题

一&#xff1a;NDK的函数调用时出现 “UnsatisfiedLinkError : 函数名” 这样的异常 解决办法&#xff1a; 网上能找到的提醒无一不是让你去仔细检查NDK中的函数命名是否正确&#xff0c;也就是“JAVA_调用该函数的JAVA类名&#xff08;完整路径区分大小写&#xff09;_函数名…

Vue_Bug error0308010Cdigital envelope routinesunsupported

Bug描述&#xff1a; error0308010Cdigital envelope routinesunsupported 解决方法&#xff1a; Just add this to the top of vue.config.js : const crypto require(crypto);/*** md4 algorithm is not available anymore in NodeJS 17 (because of lib SSL 3).* In that…

TypeScript进阶知识之接口(接口定义、接口属性、可索引类型、接口表示函数类型、额外的属性检查、接口继承、接口与类型别名的区别)

系列文章目录 引入一&#xff1a;Typescript基础引入&#xff08;基础类型、元组、枚举&#xff09; 引入二&#xff1a;Typescript面向对象引入&#xff08;接口、类、多态、重写、抽象类、访问修饰符&#xff09; 第一章&#xff1a;Typescript基础知识&#xff08;Typescri…

浅谈安科瑞无线测温设备在俄罗斯某项目的应用

摘要&#xff1a;安科瑞ATE系列和ARTM-Pn无线测温设备适用于高低压柜的梅花触头&#xff0c;线缆&#xff0c;母排等位置对温度的实时监测。 Abstract: ATE series and ARTM-Pn are suitable for monitoring the real-time temperature of circuit breaker contact,cable,busb…

跨境电商:为民营经济注入新活力

中国的民营经济一直以来都是国家经济发展的中流砥柱&#xff0c;而近年来&#xff0c;跨境电商产业崭露头角&#xff0c;为民营经济注入了新的活力和机遇。本文将探讨跨境电商如何成为中国民营企业的助推引擎&#xff0c;以及其对民营经济的积极影响。 民营经济的支柱地位 中国…

ChatGPT AIGC 完成Excel跨多表查找操作vlookup+indirect

VLOOKUP和INDIRECT的组合在Excel中用于跨表查询,其中VLOOKUP函数用于在另一张表中查找数据,INDIRECT函数则用于根据文本字符串引用不同的工作表。具体操作如下: 1.假设在工作表1中,A列有你要查找的值,B列是你希望查询的工作表名称。 2.在工作表1的C列输入以下公式:=VLO…

iMeta框架使用方法

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

判断非线性负载是否合格的方法可以从以下几个方面进行考虑:

额定功率容量&#xff1a;需要了解负载设备的额定功率容量&#xff0c;根据负载设备的规格和说明书&#xff0c;确定其额定功率容量是否能够满足实际需求&#xff0c;如果超过了负载设备的额定功率容量&#xff0c;可能会导致设备过载&#xff0c;从而影响其正常运行。 电压波形…

JVM 垃圾回收机制(可达性分析、引用计数)

目录 1 什么是垃圾2 为什么需要回收3 哪些对象被判定为垃圾呢3.1 引用计数法3.2 可达性分析算法&#xff1a;GC Roots根 1 什么是垃圾 垃圾是指在运行程序中没有任何指针指向的对象&#xff0c;就是需要被回收的。 2 为什么需要回收 执行程序会不断地分配内存空间&#xff0c…

分布式事务协调中间件---seata快速入门

分布式事务 Seata&#xff0c;之前叫做Fescar&#xff0c;是一个开源的分布式事务解决方案&#xff0c;它主要致力于提供高效和简单的分布式事务服务。Seata主要用于解决微服务架构下的数据一致性问题。 Seata 的基本原理是基于两阶段提交 (2PC) 以及三阶段提交 (3PC)&#xff…

宏定义实现二进制数的奇偶位交换

思路分析 通过宏定义来实现二进制数的奇偶位交换&#xff0c;如果一个个遍历交换的话&#xff0c;那得算到猴年马月&#xff0c;这是我在网上看到的一个思路&#xff1a; 我们将每一位&#xff08;整数在计算机里存储是4字节&#xff0c;32位&#xff09;二进制数的奇数位保留…

nodejs+vue水浒鉴赏平台系统

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…

EtherCat

百度安全验证 EtherCAT&#xff08;Ethernet for Control Automation Technology&#xff09;是一种高性能、实时性强的工业以太网通信协议&#xff0c;它可以实现多个从站设备通过一个主站设备进行控制和通信。 主站&#xff1a; EtherCAT主站是指控制整个EtherCAT网络的设备…

C++ 反向迭代器

反向迭代器的即正向迭代器的--&#xff0c;反向迭代器的--即正向迭代器的&#xff0c;反向迭代器和正向迭代器的很多功能都是相似的&#xff0c;因此我们可以复用正向迭代器作为反向迭代器的底层容器来封装&#xff0c;从而实现出反向迭代器&#xff0c;即&#xff1a;反向迭代…