对于xss等有关的html,url,unicode编码做的一个小总结。

参考:http://bobao.360.cn/learning/detail/292.html,算是对前部分作一个总结性的学习。

1

URL 编码 "javascript:alert(1)"  

JavaScript是个伪协议,对协议进行编码后,url解析就不能正常解码,所以认为协议无效,无法弹框。


2  
HTML字符实体编码 "javascript" 和 URL 编码 "alert(2)"    

html先解码,然后url再解码,这样虽然协议进行了编码,但是url解析器仍然能解析。至于url编码alert(2),不关协议,url解析器可以正常解析。 可以弹框。


  3
URL 编码 ":"  

同第一个,对JavaScript协议进行编码,不能弹框。


  4
<img src=x onerror=alert(4)>
HTML字符实体编码 < 和 >

这个就相当于字符<>,而不是代表着标签的开始或者结束的控制字符。无法弹框。


  5
HTML字符实体编码 < 和 >
  

< textarea>这个标签很特殊,对于里面的<>他都不当做标签的开始结束,而是当做字符。即使html解码后,他依然不当做开始结束的标志,不弹框。


6  

参照5 ,不弹框


 7
HTML字符实体编码 " ' " (单引号)  

html把';解码为一个控制字符',能够闭合',能够弹框。


8
Unicode编码 " ' " (单引号)  

首先,把uniocde\u0027解析为了一个常量',而不是控制字符'。所以无法闭合。


  9
HTML字符实体编码 alert(9);  

script块中的字符引用并不会被解析和解码,但是某些情况下会解码unicode


  10
Unicode 编码 alert  

当Unicode转义序列出现在标识符名称中时,它会被解码并解释为标识符名称的一部分,比如标识符alert,所以可以弹框。


  11
Unicode 编码 alert(11) 

解析标识符,可是alert(11)并不是一个标识符。不弹框


 12
Unicode 编码 alert 和 12  

没有把12解析为一个常量,必须加上"",才可以弹框


  13
Unicode 编码 " ' " (单引号)  

当用Unicode转义序列来表示一个控制字符时,例如单引号、双引号、圆括号等等,它们将不会被解释成控制字符,而仅仅被解码并解析为标识符名称或者字符串常量。

仅仅是'常量 不弹框


  14
Unicode 编码换行符(0x0A)  

'\u000a'会被解释成换行符文本,这并不会导致真正的换行从而引发JavaScript语法错误。弹框


转载于:https://www.cnblogs.com/zaqzzz/p/9426661.html

你可能感兴趣的:(对于xss等有关的html,url,unicode编码做的一个小总结。)