电脑生活派
柔彩主题三 · 更轻盈的阅读体验

网站搭建中如何设置标签审核规则

发布时间:2025-12-16 07:20:33 阅读:268 次

网站时,用户提交的内容总少不了带标签。比如在博客评论里加个<strong>加粗文字</strong>,或者论坛发帖时用<img src="xxx">插张图。但放任不管的话,可能有人偷偷插入恶意脚本,轻则页面错乱,重则安全出问题。

为什么需要标签审核

你家楼下便利店不会随便让陌生人进仓库,网站也一样。用户输入的HTML标签就像外来物品,得检查清楚才能放行。比如有人提交这段内容:

<script>alert('劫持成功')</script>

如果不处理,这段代码就会在别人打开页面时执行,可能盗取登录信息。所以得定好规则,哪些标签能留,哪些必须删或转义。

常见允许的标签类型

大多数内容平台会保留基础排版标签,比如:

  • <b>、<strong>:加粗
  • <i>、<em>:斜体
  • <a href="...">:链接(注意只允许http和https)
  • <br>:换行
  • <p>:段落
  • <img src="...">:图片(但要限制域名,防止外链滥用)

过滤策略怎么写

实际开发中,可以用正则或专用库来清理。比如PHP里用strip_tags()函数,但要注意它只能简单过滤,不能处理嵌套或属性注入。更稳妥的方式是白名单机制:

// 示例:只允许特定标签
$allowed_tags = '<a href="https://" rel="nofollow"><br><p><strong><em><img src="https://trusted-cdn.com">';
$clean_content = strip_tags($user_input, $allowed_tags);

如果是Node.js项目,可以用DOMPurify这类库:

const DOMPurify = require('isomorphic-dompurify');
let clean = DOMPurify.sanitize(dirtyString);

属性也不能忽视

光放行标签还不够。比如<img src="javascript:alert(1)">这种,看着像图片,实则执行脚本。所以对srchrefonerror这些属性要特别检查,禁止javascript:协议,过滤掉onmouseover这类事件。

实际场景举例

你做个本地生活社区,用户可以发帖分享餐馆体验。有人想贴张美食图,正常写法是:

<img src="https://cdn.foodie.com/123.jpg" alt="红烧肉">

系统按规则放行。但如果他改成:

<img src="x" onerror="fetch('/steal-cookie?c='+document.cookie)">

这种就得被过滤掉,否则其他浏览帖子的人cookie可能被偷走。

定期检查规则更新

浏览器支持的新标签一直在变,攻击手法也在升级。比如以前不常见的<svg>标签,现在也能藏恶意代码。建议每半年 review 一次你的审核规则,参考主流框架如WordPress或Discourse的做法,保持防护不过时。