下方评论区跑在本站的真实后端上(Cloudflare Pages Functions + D1)。发表、回复、点赞、勾匿名——都可以试。
大多数评论系统把「收集」当作理所当然。KComment 反过来:先假设每个字段都敏感,再逐个给出不收集的理由。
只存 md5 哈希用于生成头像。数据库被拖走,访客邮箱也不会泄露——因为里面根本没有。
IP 与 UA 只进数据库、只给管理员治理用。所有对外接口经 toPublic() 统一清洗,内部字段一个都漏不出去。
勾选匿名后,对外只返回脱敏昵称。真实昵称不落接口,F12 抓包也验证不出原身份。
Trie 匹配、命中打码、词表热更新。不依赖任何外部内容安全服务。
服务端令牌去重(IP+UA 指纹),同一访客只计一次。改前端、重放请求都无效。
后端先转义再落库,前端 textContent 渲染。两层防护,缺一层也够呛,两层都在。
Twikoo 是先行者,至今仍然优秀。KComment 没有重新发明评论,只是把隐私和安全做成了绕不过去的底层。
| 能力 | TWIKOO | KCOMMENT |
|---|---|---|
| 邮箱存储 | 明文,可在后台查看 | ✓只存 md5 哈希 |
| IP 暴露 | 需自行处理 | ✓对外接口不下发 |
| 匿名发言 | 需第三方 | ✓内置脱敏昵称 |
| 敏感词过滤 | 依赖外部服务 | ✓内置 Trie,词表热更新 |
| 防刷点赞 | 无 | ✓服务端令牌去重 |
| 管理审核 | 有 | ✓有,另含举报队列与心跳 |
对比基于 Twikoo 公开文档与源码(twikoo.js.org),欢迎提 issue 指正。
一个挂载点,一行脚本。样式自动注入,服务器地址自动识别——你的访客什么都不用装。
<div id="kcomment"></div> <script src="https://kc.kang0234.top/widget/comment-widget.js"></script>
放上去就能评论,写入本站演示库。适合先体验效果。
# 克隆、安装、启动,一气呵成 git clone https://github.com/Kang0234/KComment.git cd KComment && npm install cp .env.example .env # 改掉 ADMIN_PASSWORD 与 JWT_SECRET npm start
评论存进你自己的 SQLite,widget 脚本换成 https://你的域名/widget/comment-widget.js 即可。
<div id="kcomment"></div> <script src="/widget/comment-widget.js"></script> <script> kcomment.init({ el: '#kcomment', server: 'https://your-server.com', // 缺省自动识别 pageKey: '/post/hello-world' // 缺省用 location.pathname }); </script>
<div id="kcomment"></div> <script src="https://kc.kang0234.top/widget/comment-widget.js" data-server="https://your-server.com" data-page-key="/post/42" defer></script>
样式变量(--kc-accent 等)都在 .kc-widget 上,可整站换色。
后端刻意保持小。一个下午能读完的代码量,才是能被审计的代码量。