如何判断页面是否存在XSS
把一段 `` 塞进输入框,点提交,断页如果弹窗了,面否那基本就实锤了。何判但现实里没这么便宜的断页事。大多数XSS藏得深,面否弹窗只是何判最粗糙的试探,真正的断页判断靠的是观察“输入是否被当作代码执行”这个本质。 我一般先看反射点。面否拿搜索框举例,何判你搜“test”,断页URL里出现 `?面否q=test`,页面上也回显“test”。何判这时候把 `test` 换成 ` 转义不等于安全。你得看转义发生在哪个环节。如果后端只转义了存储值,但前端用 `innerHTML` 把数据插进DOM,那转义就被绕过了。举个真实例子:某论坛把用户昵称里的 `<` 转义了,但头像上传后,昵称会通过一个JSON接口返回,前端用 `insertAdjacentHTML` 渲染——结果转义在JSON里失效,因为JSON解析后 `<` 又变回原样,照样执行。所以判断XSS,光看输入输出不够,得顺着数据流走一遍,看每个环节有没有“解码再拼接”的操作。 还有个容易被忽略的地方:DOM型XSS。它不经过后端,URL里的 `#` 后面的片段直接传给JS处理。比如 `location.hash` 被拿来拼进 `document.write` 或 `eval`。你试 `#`,如果页面没反应,先别急着下结论。有些浏览器对 `document.write` 里的 `
如何判断页面是何判否存在XSS
`,断页如果页面原样输出这段标签,面否或者浏览器解析了 `onerror`,那就是XSS。但注意,有些开发者会做基础过滤,比如把 `<` 和 `>` 转成 `<` `>`,这时候你输入的代码会变成纯文本显示在页面上,不弹窗——这算安全吗?未必。