大多数评论系统把"收集"当成理所当然。KComment 反过来:先假设一切字段都是敏感的,再逐个给出不收集的理由。
只存 md5 哈希用于生成头像。数据库被拖走,访客邮箱也不会泄露——因为里面根本没有。
IP 与 UA 只进数据库、只给管理员治理用。所有对外接口经 toPublic() 统一清洗,一个内部字段都漏不出去。
勾选匿名后,真实昵称不落接口。返回的是脱敏昵称,F12 抓包也验证不出原身份。
Trie 匹配、命中打码,词表文件热更新。不依赖任何外部内容安全服务。
服务端令牌去重,同一访客只计一次。改前端、重放请求都无效。
后端转义落库,前端 textContent 渲染。两层防护,缺一层也够呛,两层都在。
Twikoo 是优秀的评论系统,KComment 在它的思路上把隐私和安全做成了不可绕过的底层设计。
| 能力 | Twikoo | KComment |
|---|---|---|
| 邮箱存储 | 明文可查 | 仅存哈希 |
| IP 暴露 | 需自行处理 | 对外不下发 |
| 匿名发言 | 需第三方 | 内置脱敏 |
| 敏感词过滤 | 依赖外部 | 内置 Trie |
| 防刷点赞 | 无 | 令牌去重 |
| 管理审核 | 有 | 有 + 举报流 |
评论数据存进你自己的 SQLite,部署在你自己的服务器。没有中间商。
# 克隆、安装、启动,一气呵成 git clone https://github.com/Kang0234/KComment.git cd KComment npm install cp .env.example .env # 改掉 ADMIN_PASSWORD 和 JWT_SECRET npm start
在任意页面放下两行代码,评论区即刻可用:
<div id="comment-widget"></div> <script src="https://your-server.com/widget/comment-widget.js"></script>
POST /api/admin/login 拿到 token,即可审核、驳回、删除评论,查看举报队列。治理字段(IP/UA)只有这里可见。
后端刻意保持小。一个下午能读完的代码量,才是能被审计的代码量。