You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Firestore规则阻止特定HTML标签存入Firestore?

如何通过Firestore规则阻止特定HTML标签存入数据库

你可以利用Firestore规则的字符串正则匹配功能,通过自定义函数检查字段内容是否包含禁止的HTML标签,再将这个验证逻辑加入写入权限的判断条件中。

具体实现示例

以下是修改后的规则代码,以禁止<script>、<iframe>、<style>这几个风险标签为例:

service cloud.firestore {
  match /databases/{database}/documents {
    function isClaims(claim) {
      return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.claims[claim];
    }

    // 自定义函数:检查内容是否包含禁止的HTML标签
    function hasForbiddenTags(content) {
      // 正则匹配指定标签(忽略大小写,覆盖带属性的标签写法)
      return content.matches('(?i)<script.*?>|</script>|<iframe.*?>|</iframe>|<style.*?>|</style>');
    }

    match /foo/{id} {
      allow get;
      allow list: if request.query.limit <= 111;
      allow write: if isClaims("foo") == true
        // 验证需要检查的字段(示例为content、title,可根据实际调整)
        && !hasForbiddenTags(request.resource.data.content)
        && !hasForbiddenTags(request.resource.data.title);
    }
  }
}

关键说明

  • 正则逻辑:(?i)表示忽略大小写,确保<Script>这类大小写混合的标签也会被拦截;.*?用于匹配标签内的属性内容,避免漏判<script src="xxx">这类带属性的标签。
  • 多字段适配:如果需要检查多个字段,只需逐个添加!hasForbiddenTags(字段名)的判断条件即可。
  • 双重验证保障:你已在客户端完成输入验证,规则层的验证可以进一步拦截恶意绕过客户端校验的请求,形成双重防护。

内容的提问来源于stack exchange,提问作者Raheut Rahwana

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 02:32:06