为什么那么多种unicode都可以转成同样的中文

\u0026\u006c\u0074\u003b\u0073\u0063\u0072\u0069\u0070\u0074\u0026\u0067\u0074\u003b\u0061\u006c\u0065\u0072\u0074\u0028\u0026\u0071\u0075\u006f\u0074\u003b\u0078\u0073\u0073\u0026\u0071\u0075\u006f\u0074\u003b\u0029\u0026\u006c\u0074\u003b\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u0026\u0067\u0074\u003b

    
\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e
  
  
  

在线工具:http://tool.chinaz.com/tools/...
两段unicode代码明显不同,但是经由在线转换工具竟然都是转成<script>alert("xss")</script>,和解?
图片描述

图片描述

希望有经验的朋友可以讲解一下。

阅读 5.5k
4 个回答

第一段中,你取前4个Unicode码一一解析看,其实就是&lt;,也就是<小于符号的实体表示

第二段中,是直接用<小于符号的Unicode码

两段中只有一些符号用实体的码表示还是直接是符号本身的码表示,区别就在这

而对于里面的正文,其实是一样的,你可以看到中间有几段码是一样的,这就是不需要实体表示的码

1个是小于号的HTML实体的表示,另1个是小于号的Unicode号的表示。可以理解为1种编码方式的不同把

第一个在console输出的是

&lt;script&gt;alert(&quot;xss&quot;)&lt;/script&gt; 这个在网页上会自动转码<script>alert("xss")</script>
clipboard.png

第二个

clipboard.png

代码转换

unescape('\u003c\u0073\u0063\u0072\u0069\u0070\u0074\u003e\u0061\u006c\u0065\u0072\u0074\u0028\u0022\u0078\u0073\u0073\u0022\u0029\u003c\u002f\u0073\u0063\u0072\u0069\u0070\u0074\u003e'.replace('\\u','%'))
"<script>alert("xss")</script>"

为什么不同国家的人可以交流,为什么不同的编程语言可以运行在相同的机器上??

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题