html编码自动识别,html实体编码遇上js代码

摘要: 在js中单、双引号引起来的是字符串,如果我们要在字符串中使用单、双引号,需要反斜杠进行转义。而如果字符串出现在html标签中,我们需要做转义处理。

单双引号

在js代码中

在js中单、双引号引起来的是字符串,如果我们要在字符串中使用单、双引号,需要反斜杠进行转义

bVbdo5J?w=698&h=126

如果在字符串中输出反斜杠,仍然是用反斜杠转义,即2个反斜杠输出1个反斜杠

在html代码中

html标签中,属性值通常用双引号引起来,也可以使用单引号或不用引号。

bVbdo53?w=693&h=84

这3种写法都正确,不过通常我们是选择用双引号引起来。

如果我们要在属性值中使用单、双绰号,我们不能直接写成下面这样

bVbdo6N?w=699&h=78

这些全部是错误的。我们要像在js中对单、双引号转义一样,对属性中的单、双引号转义

在html中输出预留符号,可以使用字符实体转义的形式,这里有简单介绍:http://www.w3school.com.cn/ht...。即想输出一个双引号可以使用"的形式,

bVbdo6U?w=693&h=44

除此之外,html还支持十进制与十六进制编码的形式输出字符,如我们知道字符a的ascii码的十进制是97 十六进制是61

所以我们在页面body中输出一个字符a,有以下3种形式

bVbdo67?w=696&h=119

同样,单双引号也有十进制(单:39,双:34)与十六进制(单:27,双:22),所以我们在属性中输出一个单引号有2种选择,十进制与十六进制

bVbdo7i?w=699&h=56

而输出一个双引号则有3种选择

bVbdo7m?w=700&h=89

当js代码遇上实体编码

我们可以通过dom节点提供的事件写上调用js的代码,如点击body弹出hello这个字符串,我们可以写成

bVbdo7H?w=695&h=82

如果我们的需求是就弹出一个双引号呢?

根据前述规则,我们要写成:

bVbdo7Q?w=699&h=77

当然,alert里的单引号也可以使用十进制或十六进制编码

bVbdo7Y?w=697&h=72

这样也是可以的。

是不是有点xss的感觉?

如果我们把弹双引号的需求改成单引号呢?

bVbdo92?w=736&h=133

如果我们用十进制或十六进制编码呢?

bVbdo99?w=696&h=72

这样仍然是不可以的

我们要对js字符串中的单引号进行转义,如

bVbdpai?w=698&h=85

bVbdpao?w=697&h=84

前面的οnclick="alert(''')"看起来还正常,后面的这个οnclick="alert('"')"就有点不直观了。因为后面这个看上去反斜杠像在转义&这1个字符,而&在js的字符串中并不需要转义的。

动态输出

如前述的alert弹出的消息,如果是一个变量控制,动态输出呢?

bVbdpap?w=699&h=81

那我们这个msg字符串就得注意了,从这个示例来看,这个动态的msg即出现在属性onclick中,也出现在alert的单引号开始的字符串中。

我们要对msg中的双引号转成"或"或",并对msg中单引号的前面加上一个反斜杠 ?

题外话:对msg中的反斜杠需要做double处理,因为反斜杠在html属性中并不是特殊的,但在js的字符串中是特殊的。因此正确的做法是对反斜杠及单引号前面各加上一个反斜杠

然而,你并不能保证属性是用双引号,alert中的字符串用的是单引号,因为可以写成下面这样

bVbdpax?w=700&h=86

?

这种情况我们要对msg中的单引号转成'或',并对msg中双引号前面加上一个反斜杠\

题外话:同上

看上去要根据不同的情况做不同的处理,其实也不需要

我们只需要对单、双引号前面加上一个反斜杠然后再对单、双引号实体编码即可。

在js中如果反斜杠后面跟的不需要反斜杠转义的字符,那么这个反斜杠是被丢弃的,因此像

bVbdpaH?w=697&h=49

单引号前面多加一个反斜杠也不要紧的。

自动化处理与识别提醒

在magix项目中,由于magix-combine的支持,可识别出属性中js代码的部分,并自动化处理,如

bVbdpaR?w=693&h=48

name这个变量可包含任意的单、双引号及反斜杠。工具自动识别并处理,开发者不需要做任何事情。

而对于这样的写法:

bVbdpa7?w=695&h=81

第一种写法其实并不正确,但第二种情况看上去又怪怪的。magix-combine工具能识别出来是否需要添加反斜杠,并自动添加处理。

第一种需要添加反斜杠,工具会自动加上,并提醒开发者这里的写法是不正确的。

第二种说明开发者意识到了问题所在,自己处理了,工具就不再处理也不再提醒开发者。

本文作者:行列

本文为云栖社区原创内容,未经允许不得转载。

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

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

相关文章

Activiti中具有单独数据库模式的多租户

我们过去听到的一项功能请求是以多租户方式运行Activiti引擎,使租户的数据与其他租户的数据隔离。 当然,在某些云/ SaaS环境中,这是必须的。 几个月前,波恩大学的学生拉斐尔吉伦(Raphael Gielen)与我接触&…

html5自动把某个层放在屏幕底部,告诉你一个将 footer 保持在底部的最好方法

当你在布局网页时,有可能会遇到类似下面的这种情况broken_layout.png导致这一问题的原因是页面内容太少,无法将内容区域撑开,从而在 footer 下面留下一大块空白。本文将介绍一种现代化的方法,�确保 footer 始终处于页面…

html的扇形代码导航,CSS3--利用transform和transition属性制作扇形导航

在前面,我们已经讲解了transform这个属性以及案例,那么本文会进一步结合transform和transition两个属性,并制作一个简单的案例进行说明。一、transition属性说明接下来简单分析一下transition这个属性的定义以及子属性。1)ansition-property …

常见的误解:这会创建多少个对象?

总览 一个常见的问题是一段代码创建多少个对象或多少个字符串。 答案通常不是您的想法,也不是您真正需要知道的。 了解何时创建对象是很有用的,但是有很多其他因素通常要考虑的重要得多,这可能意味着应用程序总数不是您所想的。 字符串不是一…

cvs配电保护断路器_电工电器(三)-配电电器-断路器类-剩余电流保护断路器

本文文字836,阅读时间6分钟左右。此系列文章 从配电电器的大类等进行慢慢阐述,有不足的地方 欢迎大家相互探讨交流。配电电器,顾名思义就是进行电力分配的设备。电,从发电机出来之后,由总线输出,不可能直接…

delhpi7 tcombobox清楚重复项_专利数据统计中需要搞清楚的首要问题(2)

上一篇专利数据统计中需要搞清楚的首要问题(1)介绍了通过合并申请号避免重复统计,理清了专利篇数和专利件数的问题,那么还有一类统计就是对发明项数的统计,这里就涉及到对同一项发明的重复统计问题。上一篇介绍的相同申请号但不同公开号的专利…

【Electron】Electron开发入门(八):自定义electron框架外壳(shell)的菜单(Menu)...

1.自定义electron框架外壳(shell)的菜单(Menu) electron的main.js里代码: const Menu require(electron).Menu; var template [{label: 关闭,click: function () { win.close();console.log("关闭")},// s…

交通大数据应用细分_盈海科技 | 交通大数据可视化“掘金”数据价值

面对日益拥堵的交通状况智能交通布局虽在不断完善但交通管理依旧收效甚微问题究竟出在了哪里?数据独立存储难以融合应用数据内在规律难寻数据可视化程度低……问题繁多 困难重重怎么办???交通大数据可视化解决方案上岗啦&#xff…

书评– Kubernetes Up&Running,作者:Kelsey Hightower

欢呼! 正如我在以前的帖子中所写的那样,当您开始研究和使用所有这些新颖的,有光泽的容器/编排技术时,很有可能最终导致您的翻译“迷失”。 很多信息,很多技术,很多开发 ,很多承诺,很…

MFC CListCtrl

列名、行内容的添加、删除。 据列名、行内容长度设置列宽。 排序。 提升权限 BOOL CDemoListCtrlApp::EnableDebugPrivilege() { HANDLE token; if(!OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&token)) { return FALSE; } TOKEN_PRIVILEGES tkp…

快手用旺旺瓶子做机器人_100品牌入榜,在快手的品牌运营怎么做?|11月快手品牌新势力榜揭晓...

11月榜单见证了许多新入驻快手的品牌迅速成长。母婴品牌「安慕斯」实现垂类专业场景剧情化,引起用户发注,激发用户参与,单月涨粉突破60万;服饰箱包运动垂类下的珠宝品牌「DR钻戒」以“一生唯一真爱”的理念抢占消费者心智&#xf…

认识计算机ppt课件游戏,《认识计算机》PPT课件

《认识计算机》PPT课件 认知主义认为 学习是个体对环 境的作用,而并不仅是环境刺激引起的行为改变;环境只能提供潜在刺激,至于这些潜在刺激是否受到注意或被加工,这主要取决于学习者内部的认知结构。 认 识 计 算 机 认知主义认为…

BZOJ1433 ZJOI2009 假期的宿舍 二分图匹配

1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2375 Solved: 1005[Submit][Status][Discuss]Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0Sample Output ˆ ˆHINT 对于30% 的数据满足1 ≤ n ≤ 12。对于100% 的…

Apache Spark中实现的MapReduce设计模式

该博客是该系列文章的第一篇,讨论了MapReduce设计模式一书中的一些设计模式,并展示了如何在Apache Spark(R)中实现这些模式。 在编写MapReduce或Spark程序时,考虑执行作业的数据流很有用。 即使Pig,Hive&a…

计算机主机风扇安装方法,电脑机箱怎么安装风扇减震胶钉保护主板cup?

炎炎夏日,是时候给你的爱机清清灰,特别是对于机箱散热不好的朋友就需要给电脑机箱装上几个风力强劲的风扇,这样可以大大减少CPU、主板等的老化时间,延长爱机的寿命。现在机箱风扇大都使用橡胶拉钉(或者叫减震钉、固定钉)安装&…

2个css特效冲突了怎么办_患上类风湿病怎么办?2个方法拿走不谢

类风湿是一种常见的疾病,类风湿关节炎简称为类风湿,是一个累及周围关节为主的多系统性炎症性自身免疫病,患者的关节疼痛、肿胀,而且易反复发作。那么,得了类风湿病怎么办?得了类风湿病怎么办目前&#xff0…

将项目导入eclipse中出现的jsp页面报错

图片摘自百度经验&#xff0c;实在是每次都会忘了步骤&#xff0c;每次都得重新百度&#xff0c;所以索性自己总结到博客中&#xff0c;下次如果还记不住就直接从博客中看。原谅我实在学渣&#xff0c;呜呜~~~~(>_<)~~~~ 转载于:https://www.cnblogs.com/yangyufan/p/600…

怎样让计算机恢复到桌面上,如何把电脑桌面恢复成原样.怎么办?

此方案适用XP\VISTA\WIN7系统【问题描述】&#xff1a;桌面图标太多【原因分析】&#xff1a;1.下载的软件快捷方式放到桌面没有进行整理;2.在桌面上放置太多的文件【简易步骤】&#xff1a;【360安全卫士】—【功能大全】—【桌面管理】—【整理桌面个人资料】【解决方案】&am…

中装订线位置_企业宣传画册、产品目录常用的装订方法

印刷是个专业活&#xff0c;特别是画报、画册这些种类多&#xff0c;要求高。下面介绍一下最常用到的三种装订方法&#xff1a;骑马订骑马订(saddlestitch)英文是马鞍的意思&#xff0c;取其于装订之时&#xff0c;将摺好的页子如同为马匹上鞍一般的动作&#xff0c;配至装订机…

使用Hibernate在CQRS读取模型中进行快速开发

在这篇文章中&#xff0c;我将分享一些在CQRS读取模型中使用Hibernate工具进行快速开发的技巧。 为什么要休眠&#xff1f; 休眠非常流行。 从外观上看&#xff0c;它也很容易&#xff0c;而从内部看&#xff0c;它却相当复杂。 它可以很容易地开始使用&#xff0c;而无需进行…