简单说一下xss的编码绕过与编码防御。
- 前置知识:浏览器在获取到html文件之后会对在解析文件的过程中对html编码的内容进行解码并解析(script标签内的内容会进行js解码)。
- 编码绕过:如果后端对script,alert等敏感字符进行了过滤,可以尝试对危险信息进行编码绕过,比如将
<img src=1 onerror="alert(444)">
编码为<img src=1 onerror="alert(444)">
.就可以绕过过滤。但是个人认为这种还是比较鸡肋的,因为编码后必须是html文件浏览器才会解码,如果是php等文件输出的那就不行。 - 编码防御,主要就是将'<'、'>'等字符进行html实体编码,即便是html文件'<'被实体编码,也不能被浏览器解析执行。html文件中的
<img src=1 onerror="alert(444)">
只能被解码成<img src=1 onerror="alert(444)">
却不能执行。