浏览器进制及编码常识
一、HTML与JavaScript自解码机制
JavaScript代码出现在HTML标签内,意味着这段JavaScript可以进行HTML形式的编码,这种编码有以下两种:
- 进制编码:&#xH;(十六进制格式)、&#D;(十进制格式),最后分号可以不要。
- HTML实体编码。
在JavaScript执行之前,HTML形式的编码会自动解码。
如下:
<input type="button" id='exec_btn' value='exec' onclick="document.write('<img src=@ onerror=alert(123) />')" />等同于:<input type="button" id='exec_btn' value='exec' onclick="document.write('<img src=@ onerror=alert(123) />')" />等同于:
<input type="button" id='exec_btn' value='exec' onclick="document.write('<img src=@ onerror=alert(123) />')" /
如果用户输入出现在<script>标签里的JavaScript中,需要遵循JavaScript编码,有如下几种形式:
- Unicode形式:\uH(十六进制)。
- 普通十六进制:\xH。
- 纯转义:\'、\"、\<、\>这样在特殊字符之前加\进行转义。
<input type="button" id='exec_btn' value='exec' />
<script>
var obtn = document.getElementById('exec_btn')
obtn.onclick = function() {document.write('\u003c\u0069\u006d\u0067\u0020\u0073\u0072\u0063\u003d\u0040\u0020\u0020\u0020\u006f\u006e\u0065\u0072\u0072\u006f\u0072\u003d\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0032\u0033\u0029\u0020\u002f\u003e')//document.write('<img src=@ onerror=alert(123) />')
}
</script>
二、浏览器进制常识
在浏览器常用的进制混淆有八进制,十进制和十六进制。
HTML属性最常用的属性为十进制和十六进制。十进制在HTML中使用8来表示,用&和#作为前缀,中间为十进制数字,以(;)结尾,也可以没有。如果十六进制则用Z表示,比十进制多了x,进制码也多了a~f字符来表示。x,a-f这几个字符对大小写不敏感。
CSS中也只能用到十进制和十六进制,CSS兼容HTML中的进制表示形式,十六进制还可以使用\6c形式表示,用斜线作为进制数值表示。
JavaScript中eval执行的字符串有八进制和十六进制分别用\56与\x5c表示。但是不能直接给诸如汉字的多字节编码,只能使用Unicode编码。
JavaScript自身带有两个函数可以进行进制编码与解码:char.toString(jinzhi)、String.fromCharCode(code, jinzhi)。
三、浏览器编码常识
在JavaScript中有三套编码解码函数,分别为:
escape/unescape
encodeURI/decodeURI
encodeURIComponent/decodeURIComponent
escape不编码的字符有69个:
*、+、-、.、/、@、_、0~9、a~z、A~Z
而且escape对0~255以外的unicode值进行编码时输出 %u**** 格式。encodeURI不编码的字符有82个:
!、#、$、&、'、(、)、*、+、,、-、.、/、:、;、=、?、@、_、~、0~9、a~z、A~ZencodeURIComponent不编码的字符有71个:
!、'、(、)、*、-、.、_、~、0~9、a~z、A~Z
除了JavaScript提供的这三种加密解密方法,我们还需要了解HTMLEncode、URLEncode、JSEncode、UTF-7编码、Base64编码
编码解码在线工具:http://www.ofmonkey.com/encode/unicode
浏览器进制及编码常识相关推荐
- Python学习笔记---day04进制和编码
day04进制和编码 课程目标:讲解计算机中一些必备的常识知识,让学员了解一些常见名词背后的含义(重在理解) 课程概要: python代码的运行方式 进制 计算机的单位 编码 1. Python代码运 ...
- 轩小陌的Python笔记-day04 进制和编码
day04 进制和编码 课程目标:讲解计算机中一些必备的常识知识,让大家了解一些常见名词背后的含义(重在理解,今天不写代码). 课程概要: python代码的运行方式 进制 计算机中的单位 编码 1. ...
- 高中信息技术——进制与编码刷题点整理
前言:进制与编码是信息技术最基础最入门的知识点. 1. 进制转换 人类目前最常用的进制是十进制,很大可能也是跟人的手指有10根相关,人类可以简单的区分10中不同的数字.但是对于计算机来说,很多都是 ...
- bch verilog代码_基于FPGA的多进制BCH编码
标签:编码(180)RS(99) 摘要:RS(Reed-Solomon)编码是一种具有较强纠错能力的多进制BCH编码,其既可纠正随机错误,又可纠正突发错误.RS编译码器广泛应用于通信和存储系统,为解决 ...
- 【计导非课系列】 第五节 二进制 进制计算 编码
[计导非课系列] 第五节 二进制 进制计算 编码 对于计算机来说,数字只有两个--0和1. 数据对于计算机来说是相当重要的,而电路的通断两种状态决定了计算机只能通过1和0来进行一切事情的处理.所以,我 ...
- 前端开发 html第二课 自结束标签 注释 标签中的属性 文档声明 进制 字符编码 文档使用 VScode 实体 meta标签 语义化标签 块元素和行内元素 布局标签
1 自结束标签 标签一般成对出现,但是也存在一些自结束标签 如: 多"/"和没有"/"区别不大 2 注释 注释的作用: 注释中的内容会被浏览器忽略,不会在网页中 ...
- 计算机中的进制和编码
古时候,人们是如何来传递消息的? 当年周幽王为博褒妃一笑,不顾众臣反对,竟数次无故点燃边关告急用的烽火台,使各路诸侯,长途跋涉,匆忙赶去救驾. 结果,被戏而回. 周幽王从此便失信于诸侯,最后,当边关真 ...
- 代码,绘画,设计常用的颜色名称-16进制HEX编码-RGB编码 对照一览表
排列方式,英文名称的字典序 颜色名 HEX16进制编码 RGB编码 AliceBlue F0F8FF 240,248,255 AntiqueWhite FAEBD7 250,235,215 Aqua ...
- Python3小程序:把连续的16进制UTF8编码转换为字符串
# coding: utf-8 ''' 参考用 mystery = b"\xe5\x88\xab" x = mystery.decode('utf-8') print(x)y = ...
最新文章
- 我和学员那些事儿——涅槃重生的背后
- [原]我装Solaris的艰苦经历
- linkedin总共能加30000个好友
- 基于RESTful标准的Web Api
- 身为DATASHUO大数据工程师,我亲手制作的2016年第一期数据报告
- Ubuntu 18.04安装NVIDIA(英伟达) RTX2080Ti显卡
- targetFilterLifecycle的作用
- 基于深度学习的自动化行人检测和监控系统
- react Hook useEffect()
- PCL学习笔记(20)——remove_outliers
- 无限乱斗哪个服务器有,《LOL》国服无限乱斗什么时候出 国服2020无限乱斗上线时间...
- 电脑显示更改默认服务器如何选择,电脑设置服务器在哪里设置
- 英语单词记忆 词源法-思维导图(05)词源prehend/prehens-30
- 怎么把图片按12345....顺序排列
- 字符串——删除字符串中的大写字母
- 《iOS开发完全上手——使用iOS 7和Xcode 5开发移动与平板应用》之Objective-C
- 如何将硬盘的分区大小设置为整数
- 洛谷P1118 [USACO06FEB]数字三角形Backward Digit Su…
- 数学物理方程学习笔记1
- amd处理器更新zen4服务器芯片,AMD将公布Zen4/Genoa处理器 有望升级到128核