XSS防护应根据输出位置编码,而不是简单移除某些词。HTML、属性、脚本与URL需要不同处理方式。
使用安全渲染
普通文本走转义,不把不可信内容直接拼进脚本或HTML。
控制富文本
采用允许列表清洗,限制危险标签、属性和链接协议,编辑器内容也不默认可信。
检验不同入口
评论、搜索、表单与后台预览测试,CSP作为补充。只过滤前端输入无法保护直接请求。
XSS防护覆盖多个展示位置
留言预览、后台列表和公开页面分别按输出上下文处理,富文本允许规则受控。
检查保存、读取与再次编辑的流程,输入过滤不是唯一措施,不能只屏蔽script字符串。
例如富文本允许链接,但链接协议也需检查,不能只允许标签就认为安全。
相关阅读:XSS与用户内容安全:输出上下文和富文本边界。