惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Project Zero
Project Zero
GbyAI
GbyAI
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
小众软件
小众软件
The GitHub Blog
The GitHub Blog
阮一峰的网络日志
阮一峰的网络日志
J
Java Code Geeks
WordPress大学
WordPress大学
Microsoft Security Blog
Microsoft Security Blog
IT之家
IT之家
F
Fortinet All Blogs
博客园 - 【当耐特】
H
Hackread – Cybersecurity News, Data Breaches, AI and More
P
Proofpoint News Feed
Schneier on Security
Schneier on Security
C
Cybersecurity and Infrastructure Security Agency CISA
L
LINUX DO - 热门话题
Spread Privacy
Spread Privacy
O
OpenAI News
V
V2EX
博客园 - 三生石上(FineUI控件)
AI
AI
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Stack Overflow Blog
Stack Overflow Blog
P
Privacy International News Feed
Microsoft Azure Blog
Microsoft Azure Blog
Blog — PlanetScale
Blog — PlanetScale
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Jina AI
Jina AI
H
Help Net Security
L
LINUX DO - 最新话题
Application and Cybersecurity Blog
Application and Cybersecurity Blog
T
Tenable Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Cisco Talos Blog
Cisco Talos Blog
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
博客园 - 叶小钗
V
Vulnerabilities – Threatpost
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Hacker News: Ask HN
Hacker News: Ask HN
S
Security @ Cisco Blogs
S
Securelist
T
The Blog of Author Tim Ferriss
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
雷峰网
雷峰网
V2EX - 技术
V2EX - 技术

看川博客

我被 AI "蒸馏" 了 - 看川博客 距离上线只差一个软件著作权证书 - 看川博客 开发简报(2):开发者需要先进的工具 - 看川博客 比越狱更棘手!iOS vPhone 虚拟机成黑灰产新温床 - 看川博客 开发简报(1):拥抱 AI、别无选择 - 看川博客 糟糕!我的 OpenClaw 中了病毒 - 看川博客 今天你用了多少词元? - 看川博客 闪忆 LiveMem:把回忆做成会动的壁纸 - 看川博客 Swift 从 ObservableObject 迁移到 @Observable 的再讨论 视频帧截图(Video2Frame)专业视频抽帧截图工具 - 看川博客 录音记事本 - 专业安全的录音工具 App - 看川博客 Swift 从 ObservableObject 迁移到 @Observable 从 Apple Distribution Managed 证书提取备案所需公钥和 SHA1 条码助手 iOS 2.0.0 升级指南 - 看川博客 SwiftUI Menu checkmark 文本对齐 - 看川博客 C++ RTTI 信息对二进制体积和安全性的影响 - 看川博客 SwiftUI 系统颜色表查询 - 看川博客 读马伯庸《长安的荔枝》 - 看川博客 SwiftUI List selection 的使用提示 - 看川博客 我为什么重新运营微信公众号 - 看川博客 使用 TrollStore(巨魔) 在非越狱设备上安装任意 IPA - 看川博客 条码助手小程序更新 - 看川博客 iOS 18 中 libdyld.dylib/dyld 的一些变化 涨粉神器?解密“抖音黑科技”云端商城 - 看川博客
PHP json_encode UTF-8 中文编码问题 - 看川博客
2024-12-07 · via 看川博客

在接入微信小程序文本内容安全识别时,遇到了 json_encode 默认的 Unicode 编码问题,这个隐含的处理导致请求 msgSecCheck 接口一直响应检测通过,修复办法为增加 JSON_UNESCAPED_UNICODE 参数。

做微信小程序开发,但凡有一点 UGC 内容,那肯定逃脱不了做内容安全检查的工作。如果你没有足够强大和及时的词库,那就乖乖地按微信官方文档接入其 msgSecCheck、mediaCheckAsync 接口,文档地址如下:

小程序安全 /内容安全

我使用的后端系统是 PHP 开发的,在接入 msgSecCheck 接口时发现无论我发送什么内容,接口返回的 label 都是 100(正常)。我搜索了下微信开放社区里相关讨论,发现有不少人都遇到了和我一样的问题:即 msgSecCheck 接口似乎并没有生效,总是返回检查通过,有不少人怀疑这个接口就是用于应付的摆设。以往的经验告诉我,事情肯定不会这么简单,既然这个接口公开在那里这么长时间了,接口本身出问题的概率几乎没有,几乎可以确定就是开发者的接入姿势不对。

我在追行排查后,最终定位发生错误的原因为 JSON 编码参数时使用了:

$json = json_encode($data);

json_encode 使用 UTF-8 编码字符串,但默认会将中文转码为 Unicode 代码点的形式。这种编码方式确保了 JSON 字符串在任何编码环境下都能被正确解析,但会导致中文等字符在查看时不够直观。可以通过增加 JSON_UNESCAPED_UNICODE 参数来防止非 ASCII 字符被转义,而是直接以原始字符形式输出。

一个示例,更直观地对比:

$data = ['name' => '看川博客', 'url' => 'https://kanchuan.com'];
$json = json_encode($data, JSON_UNESCAPED_UNICODE);
var_dump($json);
$json = json_encode($data);
var_dump($json);

打印结果为:

string(54) "{"name":"看川博客","url":"https:\/\/kanchuan.com"}"
string(66) "{"name":"\u770b\u5ddd\u535a\u5ba2","url":"https:\/\/kanchuan.com"}"

修改为:

$json = json_encode($data, JSON_UNESCAPED_UNICODE);

即可满足 msgSecCheck 接口要求。

另外,关于微信 msgSecCheck 接口的测试,有时候我们不太好确定一个词汇在 msgSecCheck 看来是不是有问题,即无法区分 msgSecCheck 接口的返回是真的通过还是接入有问题,我们可以进入微信小程序的后台,依次打开「开发与服务」-「开发管理」-「安全中心」-「内容风控」添加自定义的关键字。对于自定义的关键字,msgSecCheck 的响应是可以确定的,只要我们测试自定义关键字时 msgSecCheck 接口的响应符合预期,即说明接入正确。