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

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

1<a href="%6a%61%76%61%73%63%72%69%70%74:%61%6c%65%72%74%28%31%29"></a>

URL 编码 "javascript:alert(1)"  
JavaScript是个伪协议,对协议进行编码后,url解析就不能正常解码,所以认为协议无效,无法弹框。

2<a href="&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;:%61%6c%65%72%74%28%32%29">  
HTML字符实体编码 "javascript" 和 URL 编码 "alert(2)"    
html先解码,然后url再解码,这样虽然协议进行了编码,但是url解析器仍然能解析。至于url编码alert(2),不关协议,url解析器可以正常解析。 可以弹框。

  3<a href="javascript%3aalert(3)"></a>
URL 编码 ":"  
同第一个,对JavaScript协议进行编码,不能弹框。

  4<div>&#60;img src=x onerror=alert(4)&#62;</div>
HTML字符实体编码 < 和 >  
这个就相当于字符<>,而不是代表着标签的开始或者结束的控制字符。无法弹框。

  5<textarea>&#60;script&#62;alert(5)&#60;/script&#62;</textarea>
HTML字符实体编码 < 和 >
<textarea><script>alert(6)</script></textarea>  
< textarea>这个标签很特殊,对于里面的<>他都不当做标签的开始结束,而是当做字符。即使html解码后,他依然不当做开始结束的标志,不弹框。

6<textarea><script>alert(6)</script></textarea>  
参照5 ,不弹框

 7<button onclick="confirm('7&#39;);">Button</button>
HTML字符实体编码 " ' " (单引号)  
html把&#39;解码为一个控制字符',能够闭合',能够弹框。

8<button onclick="confirm('8\u0027);">Button</button>
Unicode编码 " ' " (单引号)  
首先,把uniocde\u0027解析为了一个常量',而不是控制字符'。所以无法闭合。

  9<script>&#97;&#108;&#101;&#114;&#116&#40;&#57;&#41;&#59</script>
HTML字符实体编码 alert(9);  
script块中的字符引用并不会被解析和解码,但是某些情况下会解码unicode

  10<script>\u0061\u006c\u0065\u0072\u0074(10);</script>
Unicode 编码 alert  
当Unicode转义序列出现在标识符名称中时,它会被解码并解释为标识符名称的一部分,比如标识符alert,所以可以弹框。

  11<script>\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0031\u0029</script>
Unicode 编码 alert(11) 
解析标识符,可是alert(11)并不是一个标识符。不弹框

 12<script>\u0061\u006c\u0065\u0072\u0074(\u0031\u0032)</script>
Unicode 编码 alert 和 12  
没有把12解析为一个常量,必须加上"",才可以弹框

  13<script>alert('13\u0027)</script>
Unicode 编码 " ' " (单引号)  
当用Unicode转义序列来表示一个控制字符时,例如单引号、双引号、圆括号等等,它们将不会被解释成控制字符,而仅仅被解码并解析为标识符名称或者字符串常量。
仅仅是'常量 不弹框

  14<script>alert('14\u000a')</script>
Unicode 编码换行符(0x0A)  
'\u000a'会被解释成换行符文本,这并不会导致真正的换行从而引发JavaScript语法错误。弹框

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值