参考: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="javascript:%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><img src=x onerror=alert(4)></div>
HTML字符实体编码 < 和 >  

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


  5<textarea><script>alert(5)</script></textarea>
HTML字符实体编码 < 和 >
<textarea><script>alert(6)</script></textarea>  

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


6<textarea><script>alert(6)</script></textarea>  

参照5 ,不弹框


 7<button onclick="confirm('7');">Button</button>
HTML字符实体编码 " ' " (单引号)  

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


8<button onclick="confirm('8\u0027);">Button</button>
Unicode编码 " ' " (单引号)  

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


  9<script>aler&#116(9)&#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语法错误。弹框


最新文章

  1. Drools 函数学习
  2. UVA - 11134 Fabled Rooks[贪心 问题分解]
  3. Huffman的应用_Huffman编码
  4. 简单又高效的Access分页语句
  5. wireshark常用过滤规则
  6. SVN版本冲突解决
  7. Unity3D之游戏暂停制作方法记录
  8. PICK定理模板
  9. 串行CPU设计
  10. Flex中操作XML的E4X方法
  11. bzoj4810 [Ynoi2017]由乃的玉米田
  12. 【Android Studio安装部署系列】八、Android Studio主题皮肤更换
  13. 随机函数rand()与srand()
  14. STM32F103X datasheet学习笔记---USART
  15. whiledo循环输出数组中的分数
  16. Nginx加载ngx_pagespeed模块,加快网站打开的速度
  17. PHP一句话木马研究
  18. Vue 3.0 的生命周期
  19. 文档类型DTD,DOCTYPE和浏览器模式
  20. 【51Nod 1239】欧拉函数之和

热门文章

  1. meterpreter &gt; sysinfo
  2. 500 Days Of Summer
  3. java Vamei快速教程12 类型转换和多态
  4. 2018. 2.4 Java中集合嵌套集合的练习
  5. python 线程的调用方式
  6. 安装CentOS6.9虚拟机
  7. 前端开发APP,从HBuilder开始~
  8. linux通配符知识
  9. DevOps - 配置管理 - Puppet
  10. [译]The Python Tutorial#12. Virtual Environments and Packages