v1.0 · MIT 开源 · 自托管

评论,但隐私优先。

邮箱只存哈希。IP 永不下发。匿名是真的匿名。
一个部署在你自己服务器上的评论系统。

npm install && npm start — 无需注册,无第三方服务,数据在你手里

your-blog.com/post/why-privacy
评论
下面是真实可交互的演示 — 试着发一条,或点匿名
Design Principles

隐私不是功能,是默认值

大多数评论系统把"收集"当成理所当然。KComment 反过来:先假设一切字段都是敏感的,再逐个给出不收集的理由。

01

邮箱零明文

只存 md5 哈希用于生成头像。数据库被拖走,访客邮箱也不会泄露——因为里面根本没有。

02

IP 永不下发

IP 与 UA 只进数据库、只给管理员治理用。所有对外接口经 toPublic() 统一清洗,一个内部字段都漏不出去。

03

匿名是真匿名

勾选匿名后,真实昵称不落接口。返回的是脱敏昵称,F12 抓包也验证不出原身份。

04

敏感词内置

Trie 匹配、命中打码,词表文件热更新。不依赖任何外部内容安全服务。

05

点赞防刷

服务端令牌去重,同一访客只计一次。改前端、重放请求都无效。

06

XSS 双保险

后端转义落库,前端 textContent 渲染。两层防护,缺一层也够呛,两层都在。

Comparison

和 Twikoo 比,差在哪

Twikoo 是优秀的评论系统,KComment 在它的思路上把隐私和安全做成了不可绕过的底层设计。

能力TwikooKComment
邮箱存储明文可查仅存哈希
IP 暴露需自行处理对外不下发
匿名发言需第三方内置脱敏
敏感词过滤依赖外部内置 Trie
防刷点赞令牌去重
管理审核有 + 举报流
Quickstart

两行 HTML,接入完成

评论数据存进你自己的 SQLite,部署在你自己的服务器。没有中间商。

01克隆并启动
terminal
# 克隆、安装、启动,一气呵成
git clone https://github.com/Kang0234/KComment.git
cd KComment
npm install
cp .env.example .env  # 改掉 ADMIN_PASSWORD 和 JWT_SECRET
npm start
02嵌入页面

在任意页面放下两行代码,评论区即刻可用:

your-page.html
<div id="comment-widget"></div>
<script src="https://your-server.com/widget/comment-widget.js"></script>
03进管理后台

POST /api/admin/login 拿到 token,即可审核、驳回、删除评论,查看举报队列。治理字段(IP/UA)只有这里可见。

API

九个端点,没有更多的了

后端刻意保持小。一个下午能读完的代码量,才是能被审计的代码量。

前台公开

GET/api/comment树形评论(已脱敏)
POST/api/comment发表 / 回复
POST/api/comment/:id/like点赞 / 取消
POST/api/comment/:id/report举报

管理Bearer Token

POST/api/admin/login登录
GET/api/admin/comments列表(含治理字段)
PATCH/api/admin/comments/:id/review审核
DEL/api/admin/comments/:id删除(含回复)
GET/api/admin/reports举报队列

访客把想法留下,
而不是把隐私留下。

MIT 开源 · 自托管 · SQLite 单文件数据库