前端输入过滤真能防XSS吗?我这样写安全吗?

开发者玉聪 阅读 11

我在React项目里做用户评论功能,担心XSS攻击,就对输入做了个简单过滤,但不确定这样够不够。比如把script标签替换成空字符串,但听说还有其他绕过方式?

下面是我现在的处理代码:

const sanitizeInput = (input) => {
  return input.replace(/<scriptb[^<]*(?:(?!</script>)<[^<]*)*</script>/gi, '');
};

// 使用示例
const CommentBox = ({ userInput }) => {
  const safeContent = sanitizeInput(userInput);
  return <div dangerouslySetInnerHTML={{ __html: safeContent }} />;
};

这样写是不是太天真了?有没有更靠谱的前端过滤方案?

我来解答 赞 1 收藏
二维码
手机扫码查看
1 条解答
百里金利
你这个问题,光靠替换script标签远远不够。用库吧,像DOMPurify这种专门对付XSS的库才是靠谱的。直接上代码:
import DOMPurify from 'dompurify';

const sanitizeInput = (input) => {
return DOMPurify.sanitize(input);
};

// 使用示例
const CommentBox = ({ userInput }) => {
const safeContent = sanitizeInput(userInput);
return
;
};
点赞
2026-03-25 12:01