讲师中心 微信公众号
AI工具推荐 视频效率加速

OpenResty 怎么通过 Lua 脚本实现敏感词过滤与文本内容审查

风瑶大大_5497

风瑶大大_5497

发布时间:2026-09-06 11:03:29

|

741人浏览过

|

来源于php中文网

原创

OpenResty通过Lua实现敏感词过滤,核心是ngx.var获取文本、Trie树/Redis优化匹配、按策略响应拦截/脱敏/打标,并在init_by_lua_block预加载词库、注意UTF-8编码与正则安全。

openresty 怎么通过 lua 脚本实现敏感词过滤与文本内容审查

OpenResty 通过 Lua 脚本实现敏感词过滤与文本内容审查,核心在于利用 ngx.var 获取请求参数或请求体,用 Lua 字符串处理或正则匹配进行关键词检测,并结合预加载的敏感词库(如数组、Trie 树或 Redis 缓存)提升性能和可维护性。关键不是简单替换,而是兼顾准确性、性能和扩展性。

获取待审查文本内容

根据接口设计,文本可能来自不同位置:

  • GET 请求参数:如 /search?q=xxx,用 ngx.var.arg_qngx.req.get_uri_args().q 获取;
  • POST 表单数据:需先调用 ngx.req.read_body(),再用 ngx.req.get_post_args() 解析;
  • JSON 请求体:需读取原始 body(ngx.req.get_body_data()),用 cjson.decode() 解析,提取字段如 contenttext
  • Header 或 Cookie 中的内容:如 ngx.var.http_x_user_inputngx.var.cookie_input,注意做基础校验防空值。

构建高效敏感词匹配机制

直接用 string.find 遍历关键词列表在高并发下性能差,推荐以下方式:

Nginx Config Linter
Nginx Config Linter

对 Nginx 配置文件进行语法检查、验证和安全、性能审计。

下载
  • 内存 Trie 树(推荐):使用 lua-resty-trie 模块预加载敏感词,支持前缀匹配与模糊容忍(如“*毒*”),查询时间复杂度接近 O(m),m 为文本长度;
  • Redis + Set/Sorted Set:将敏感词存入 Redis,用 SMEMBERS 加载到 Lua table(适合词库不频繁变更);或用 SSCAN 分批加载防阻塞;
  • 编译正则模式(小规模适用):将敏感词转义后拼成 (词1|词2|词3),用 ngx.re.find 扫描,注意控制总长度(避免 PCRE 栈溢出)和启用 "jo" 选项跳过捕获提升速度。

执行审查逻辑并返回结果

检测到敏感词后,按业务策略响应:

  • 静默拦截:设置 ngx.exit(400) 或自定义状态码,返回 JSON 如 {"code":403,"msg":"内容含敏感信息"}
  • 脱敏返回:用 string.gsub 或 Trie 的替换接口将命中词替换为 ** 或星号,再透传给后端;
  • 打标记录:调用 ngx.log(ngx.WARN, "sensitive word: "..word..", uri: "..ngx.var.uri),配合日志采集系统分析风险趋势;
  • 联动风控:调用 resty.http 向内部风控服务上报用户 ID、文本哈希、命中词等,触发频次限制或人工复审。

优化与注意事项

真实部署中需关注几个易忽略点:

  • 敏感词库建议放在 init_by_lua_block 中一次性加载,避免每次请求重复读文件或查 Redis;
  • 对中文需注意编码——确保 Nginx 配置 lua_code_cache on 且 Lua 文件保存为 UTF-8 无 BOM;
  • 避免正则回溯爆炸:禁用 . 匹配换行(加 n 选项),敏感词本身不要含未转义的正则元字符;
  • 若审查粒度到段落或整文,可结合分词(如 lua-resty-jieba)提升准确率,但会增加延迟,建议异步或采样审查。

热门AI工具

更多
WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

Loomy
Loomy Hot

一款AI工具,主要用于科大讯飞发布的桌面级 AI 助理,比 OpenClaw 更易用、更安全!,适合需要提升相关任务效率的用户。

相关专题

更多
Buffalo框架数据库开发全教程
Buffalo框架数据库开发全教程

本专题围绕Buffalo框架数据库开发,讲解database.yml多环境配置、soda与fizz迁移生成回滚、模型结构体标签、增删改查与条件查询、一对多与多对多关联、数据校验、回调钩子、事务处理及原生SQL执行能力。

0

2026.09.23

Buffalo框架路由与请求处理实操指南
Buffalo框架路由与请求处理实操指南

本专题讲解Buffalo框架路由与请求处理机制,涵盖路由注册与分组、资源路由、Handler编写规范、Context上下文方法、参数绑定、中间件编写挂载、Session与Cookie读写、Flash消息及错误页面定制方法。

0

2026.09.23

Buffalo框架零基础入门教程
Buffalo框架零基础入门教程

本专题整理Buffalo框架入门内容,涵盖Go环境准备、buffalo CLI安装、新项目生成、目录结构说明、dev热加载启动、数据库连接配置与常见报错排查,帮助新手按约定优于配置的思路跑通第一个Buffalo框架应用。

0

2026.09.23

Conan创建软件包配方指南
Conan创建软件包配方指南

本专题介绍通过conanfile.py创建软件包的方法,讲解包名、版本、依赖和构建设置等基础信息,以及source、build、package、package_info等常用方法的作用及编写思路。

0

2026.09.22

Conan二进制包配置指南
Conan二进制包配置指南

本专题介绍Conan根据操作系统、编译器、架构和构建类型生成二进制包的方法,讲解Profile、Settings、Options及Package ID的作用,帮助管理不同平台和编译环境下的包版本。

0

2026.09.22

Conan私有仓库搭建教程
Conan私有仓库搭建教程

本专题系统的讲解Conan私有仓库的搭建流程,涵盖仓库服务部署、存储目录配置、用户认证、权限划分和远程地址添加,并介绍内部C++依赖包的上传、下载及版本维护方法。

0

2026.09.22

loomy官网入口地址合集
loomy官网入口地址合集

本专题汇总了 Loomy 桌面 AI 助理的官方入口地址合集及使用指南。提供 macOS 与 Windows 客户端下载 。Loomy 是讯飞推出的桌面级 AI 工作搭子,支持文件整理、数据分析、网页操作及通过飞书/钉钉远程操控电脑,助你高效完成本地办公任务 。

0

2026.09.22

NumPy常见函数使用方法
NumPy常见函数使用方法

本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。

0

2026.09.22

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

20

2026.09.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
phpEnv手册
phpEnv手册

共0课时 | 0人学习

nginx手册
nginx手册

共0课时 | 0人学习

进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn