网安基础---页面编码与解码

本文详细解释了ASCII编码如何影响HTML和JavaScript中的字符处理,包括协议编码限制、冒号特殊性、RCDATA元素、JS编码规则以及不同阶段的解码顺序,如HTML实体编码、URLcode和Unicode解码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ASCII:查表

URLcode:%+ASCII转十六进制

HTML实体编码:&#x + ASCII码十六进制  或      &# + ASCII码十进制

unicode:查表

规则:

1. 协议不能被编码(如:javascript),但是可以被html实体编码,在页面直接被解码

2. 冒号也不能被编码,为协议的一部分

3. RCDATA元素:<textarea>,<title>

    只能容纳文本内容和字符引用(实体编码)

4. JS代码中,符号不能被编码

5. 页面解码顺序:html实体编码 --- > urlcode  --->  javascript(unicode)

6. <script> 标签是原始文本元素,只能容纳文本和函数,内容被html编码时,会被识别成文本,不被解析。

    (允许unicode编码,js中的编解码就是unicode等,但不能编码符号)

实例:

1.  不弹窗,协议不能被urlcode编码

2.  弹窗,协议允许html实体编码,后面的允许urlcode编码

3.  不弹窗,冒号不能被urlcode编码,为协议的一部分

4.  不弹窗,虽然html直接被解码,但是不会进入标签开始状态

html解析过程:当遇到一个 < 时,就会进入标签开始状态,再进入数据状态,开始读取中间的数据部分,在标签内部再遇到 < 再进入标签开始状态,然后数据状态,再读取数据......

当<被编码后,读取到&#60时,解码成<,但不会进入标签开始状态,也不会进行数据状态,所以不会进行弹窗

5.  不弹窗,< 被解码后,不会进入标签开始状态,里面函数不能被解析

6.  不弹窗:<textarea>标签只能容纳文本内容和实体编码,<script>标签被识别成文本内容

7.  弹窗,html实体编码最先被解码,"  '  "在js识别之前已经被解码成  "  '  "

8.  不弹窗,  符号只能被html编码,unicode编码是js中的编码

9.  不弹窗,<script>标签是原始文本元素,只能容纳文本内容,html实体编码被识别成文本

10. 弹窗,js中允许unicode编码,且没有编码符号

11. 不弹窗,js中允许unicode编码,但不能编码符号

12.  不弹窗,函数中数字也不能被编码

13. 不弹窗,js中不能编码符号

14. 可以弹窗,编码换行符后,仍然弹窗

15. 弹窗,html页面解析顺序:html-->urlcode-->javascript(unicode)

<a href="&#x6a;&#x61;&#X76;&#x61;&#x73;&#x63;&#X72;&#x69;&#x70;&#x74;&#x3a;&#x25;&#X35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x31;&#X25;&#x35;&#X63;&#X25;&#X37;&#x35;&#X25;&#X33;&#X30;&#X25;&#x33;&#X30;&#X25;&#x33;&#X36;&#x25;&#x36;&#x33;&#x25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#X30;&#x25;&#x33;&#x36;&#x25;&#x33;&#x35;&#X25;&#x35;&#x63;&#x25;&#x37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#X37;&#x25;&#X33;&#X32;&#X25;&#X35;&#X63;&#X25;&#X37;&#x35;&#x25;&#x33;&#x30;&#x25;&#x33;&#x30;&#x25;&#x33;&#x37;&#x25;&#x33;&#x34;&#x28;&#x31;&#x35;&#x29;"> test</a>

第1步. html解码
<a href="javascript:%5c%75%30%30%36%31%5c%75%30%30%36%63%5c%75%30%30%36%35%5c%75%30%30%37%32%5c%75%30%30%37%34(15)"> test </a>

第2步. urlcode 解码
<a href="javascript:\u0061\u006c\u0065\u0072\u0074(15)"> test </a>

第3步. unicode解码
<a href="alert(15)"> test</a>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值