【免费下载链接】KoitoKoito is a modern, themeable scrobbler that you can use with any program that scrobbles to a custom ListenBrainz URL项目地址https://gitcode.com/gh_mirrors/ko/Koito点击查看免费下载如果你部署过 Koito——这款可自托管、支持对接自定义 ListenBrainz 地址的音乐听歌统计 scrobbler——那你大概率需要关心三件事统计页面对全网默认开放、管理员账号还是出厂默认密码、登录接口可能被暴力尝试。这篇文章带你逐项启用 Koito 内置的登录门Login Gate、登录限流与 API 密钥管理三大安全机制让你的听歌数据服务在公网上也关门营业。为什么自托管听歌统计不能开门营业Koito 会把你的播放历史整理成非常私密的画像Top Artists、Top Albums、Top Tracks、每日活跃热力图甚至每月 Rewind 报告。这些数据经由/apis/web/v1下的系列接口提供而默认配置下这些统计接口不需要登录——任何拿到服务地址的人都能浏览你的完整听歌历史。上图这类 Artist 详情页里包含总播放数、收听时长、最近播放记录等信息。对熟人来说这是彩蛋对陌生人来说则是隐私。好消息是Koito 已经把安全开关都做好了你只需要按清单打开它们。开启登录门用 KOITO_LOGIN_GATE 锁住统计页第一步也是最关键的一步把环境参数KOITO_LOGIN_GATE设为true。参数默认值说明KOITO_LOGIN_GATEfalse设为true后未登录用户无法查看任何统计数据开启后所有统计类接口/top/albums、/listens、/search等都会先经过 Login Gate 校验请求必须携带有效的会话 Cookie或者携带合法的 API 密钥否则直接返回unauthorized401。相关逻辑位于 engine/middleware/authenticate.go路由绑定见 engine/routes.go。改掉默认密码首次启动就要设置Koito 首次启动会自动创建管理员账号默认用户名admin、默认密码changeme。这两个值可以用环境变量覆盖仅首次启动时生效KOITO_DEFAULT_USERNAME自定义管理员用户名KOITO_DEFAULT_PASSWORD自定义管理员密码密码在入库前会经过 bcrypt 加盐哈希存储见 engine/handlers/auth.go不是明文。登录后签发的koito_sessionCookie 标记为HttpOnly默认 24 小时过期勾选记住我则延长到 30 天并在每次访问时滑动续期。完整参数说明见官方配置文档 docs/src/content/docs/reference/configuration.md。提醒如果你已经在裸奔状态下运行了一段时间建议登录后尽快在页面上修改密码或直接重置部署。保持登录限流开启内置的暴力破解防线Koito 在登录接口/apis/web/v1/login上默认挂了一个限流器每 1 分钟最多尝试 10 次超出的请求会收到429 Too Many Requests与{error:too many requests}响应。实现位于 engine/routes.go。只有一个相关开关参数默认值说明KOITO_DISABLE_RATE_LIMITfalse设为true会关闭登录限流默认值就是安全的绝大多数场景下请勿改动。除非你有明确的自动化登录脚本被误伤才考虑临时放开。像管理密码一样管理 API 密钥很多用户会同时把 Koito 当作 ListenBrainz 的自定义上报目标让 Navidrome 等播放器把 scrobble 数据发到 Koito。这类机器身份靠的就是 API 密钥。API 密钥的安全设计相当规范48 位随机字符串由 engine/handlers/apikeys.go 生成长度和熵足以防止枚举。必须带标签创建密钥时要填label方便日后区分Navidrome 用的还是脚本用的。认证方式ListenBrainz 接口/apis/listenbrainz/1/submit-listens只接受Authorization: Token {token}请求头见 engine/middleware/authenticate.go密钥无效直接拒绝。可随时吊销密钥支持改名与删除怀疑泄露时删掉重建即可无需重启服务。管理界面在客户端的 client/app/components/modals/ApiKeysModal.tsx支持一键复制和逐条删除。验证密钥是否有效可以请求GET /apis/listenbrainz/1/validate-token响应中会返回valid与user_name见 engine/handlers/lbz_validate.go。密钥管理三原则一个用途一把密钥、密钥只存服务器侧如 Docker secrets、离职/换设备就吊销。附加加固项CORS 与请求日志CORS 白名单通过KOITO_CORS_ALLOWED_ORIGINS限制可跨域调用 Web API 的来源逗号分隔默认不开放跨域。注意 ListenBrainz 上报接口本身按协议需要开放给任意来源的播放器这属于设计使然其保护来自上一节的 API 密钥。请求日志每个请求都会分配X-Request-ID并记录访问日志见 engine/middleware/middleware.go 所在的中间件模块排查异常访问时可按 request id 追踪。数据清理接口受保护DELETE /data这类高危操作同样要求会话或密钥认证未登录无法触发。Koito 安全加固清单上线前逐项打勾#检查项操作状态1登录门KOITO_LOGIN_GATEtrue☐2默认密码首启设置KOITO_DEFAULT_USERNAME/KOITO_DEFAULT_PASSWORD之后不再用 admin/changeme☐3登录限流保持KOITO_DISABLE_RATE_LIMIT为默认不关闭☐4API 密钥每个 scrobbler/脚本单独建密钥并打标签定期审计、及时吊销☐5CORS按需配置KOITO_CORS_ALLOWED_ORIGINS避免不必要的开放☐6日志打开KOITO_ENABLE_STRUCTURED_LOGGING便于审计异常请求☐六项勾完你的 Koito 就从听歌数据裸奔公网变成了一扇带门禁、带限速、带钥匙管理的私人音乐档案库。赞分享【免费下载链接】KoitoKoito is a modern, themeable scrobbler that you can use with any program that scrobbles to a custom ListenBrainz URL项目地址https://gitcode.com/gh_mirrors/ko/Koito点击查看免费下载相关推荐别让API密钥裸奔DeepEval密钥管理终极指南安全实践与避坑技巧别让API密钥裸奔DeepEval密钥管理终极指南安全实践与避坑技巧 在LLM应用开发过程中API密钥的安全管理是至关重要的环节。DeepEval作为专业人工智能大模型模型评测AI 评测测试红蓝对抗提示工程别让API密钥暴露chatbot-ui环境变量与密钥安全管理指南别让API密钥暴露chatbot ui环境变量与密钥安全管理指南 为什么环境变量管理如此重要 在AI应用开发中API密钥如同数字钥匙一旦泄露可能导致服务人工智能AI 应用前端后端交互助手ViT可解释性实战从图像分类到热力图生成ViT可解释性实战从图像分类到热力图生成 Transformer Explainability是一个基于PyTorch实现的开源项目专注于为Transfor创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考