1.1 XSS攻击常用编码
1.1.1 URL编码
url的设计者考虑到安全传输问题,防止url字符丢失,所以选用了相对较小的通用的安全字母表。另一方面url的设计者希望url是完整的,有时候需要url中包含除去通用安全字母表之外的二进制数据和字符(比如中文)。所以url引入了一种转义机制,将不安全的字符编码转为安全字符再进行传输。
- 百分号编码:url 编码包含一个百分号(%),后面跟着两个表示字符ASCII码的十六进制数。例如:空格转为"%20"。
1.1.2 HTML编码
一些保留字符出现在文本节点和标签值里是不安全的,比如"<>"会导致浏览器误认为标签,如果想要正确的显示这些字符需要使用html编码。
- 实体编码:一般以"&"开头,";" 结尾,可以不加";"。如:“<”转为"<"
- 进制编码:以"&#"开头,加上字符的数值,";"结尾,可以不加";"。字符的数值可以是任意十进制ascii码或unicode字符编码,十六进制的数值需要在编码数字前加"x"。
1.1.3 Javascript编码
- 数字形式:\u后面加4位16进制数字(或\x后加2位16进制数字),按字符的unicode数值编码,不足位数以零填充。如: "<"转为"\u003c"或"\x3c",其中"\u"开头的Unicode转义方式可以用在字符串之外的位置,其他的不可以。
1.1.4 Jsfuck编码
JSFuck是一种深奥的 JavaScript 编程风格,以这种风格写成的代码中仅使用(、)、+、[、]、! 六种字符,它只使用六个不同的字符来编写和执行代码,这种编码方式在CTF竞赛中非常常见。
1.1.5 编码方式总结

我的微信
如果有技术上的问题可以扫一扫我的微信