最近帮朋友看一个社区类小程序,上线没几天就被平台警告,说有用户发布了违规内容。查了一圈才发现,问题出在内容安全策略没做好。很多人觉得小程序后台有审核机制就万事大吉,其实不然,光靠平台不够,开发者自己也得设防。
为什么需要内容安全策略
小程序允许用户发评论、上传图片、发布动态,这些都可能成为违规信息的入口。比如有人上传含敏感词的文字,或者发张带广告二维码的图,系统若没拦截,轻则警告整改,重则直接下架。
微信、支付宝等平台虽然提供了内容安全接口,但不是默认全开的,得你自己调用。很多开发者图省事,跳过这步,结果踩了坑。
文本内容怎么过滤
用户输入的文字最常见,比如评论、昵称、留言。建议在提交前通过平台提供的内容安全 API 检测一遍。以微信为例,在云函数里调用 openapi.security.msgSecCheck:
const result = await cloud.openapi.security.msgSecCheck({
content: userSubmittedText
});
if (result && result.errCode === 0) {
// 内容合规,可以保存
} else {
// 存在风险,拒绝提交
}
注意,content 字段不能超过 5000 字符,超了要截断处理。另外,这个接口对敏感词、广告语、低俗内容识别效果不错,但不是百分百覆盖,所以关键场景还得加人工审核队列。
图片内容别忽略
用户上传的图片更容易藏雷。一张看似正常的截图,可能包含非法信息或二维码导流。微信也提供了图片检测接口 openapi.security.imgSecCheck:
const fileContent = await cloud.downloadFile({
fileID: uploadedImageFileID
});
const result = await cloud.openapi.security.imgSecCheck({
media: {
contentType: 'image/jpg',
value: fileContent.fileContent
}
});
返回 errCode: 0 才表示安全。测试时发现,连图片里的文字也能识别,比如“加VX123456”这种,基本逃不掉。
前端不能只做表面功夫
有些人图快,在前端加个关键词过滤就完事,比如把“微信”替换成“*”。这种做法等于没防——用户改用拼音或者符号绕过,后端照样收到脏数据。
真正的防护必须落在后端或云函数,前端限制只是用户体验优化,不能替代安全校验。
定期更新本地敏感词库
平台接口虽然强,但总有延迟。你可以维护一份本地敏感词表,配合正则匹配快速拦截高频违规内容。比如:
const bannedWords = ['刷单', '代考', '发票', '加我V'];
const pattern = new RegExp(bannedWords.join('|'), 'i');
if (pattern.test(userInput)) {
return '内容包含违规词汇';
}
这个词库要定期根据实际拦截情况更新,尤其是运营反馈的漏网之鱼。
日志记录和应急响应
哪怕做了层层过滤,也不能保证万无一失。建议所有用户提交的内容都留日志,包括时间、用户 OpenID、原始内容、检测结果。一旦出事,能快速定位源头。
再设置个紧急开关,比如某个用户短时间内发布多条疑似违规内容,自动触发临时封禁,同时通知管理员介入。
小程序上线容易,维护好才见真章。内容安全不是一次性配置,而是持续运营的一部分。别等到被下架才想起来补漏洞,那时候用户早就流失了。