文章解耦 241024:解耦自 【索引】定制自己的 Waline 评论系统

关于评论安全博主分享自己的一些经验:

  1. 不法分子会利用特殊方法将违规内容评论在站点不存在的链接上。站长需及时接收评论通知并检查 Waline 后端及时处理。
  2. 不法分子的评论文本也许会很正常,但携带只有在外网才能查看的违规图片,导致一些站长在平时日常检视、邮件通知中没有留意。这种情况需要多加留心,我们可以在 Waline 后台点击评论的编辑按钮查看是否携带了不明链接。
  3. 参看官方文档完善更多的安全措施:服务端环境变量 | Waline

设置违禁词(服务端配置)

最近苦于梯子广告入侵,设置违禁词可以解决这个问题。

修改在 Github 上 Waline 文件 index.js

1
2
3
4
module.exports = Application({
// 违禁词
forbiddenWords: ['免费节点'],
});

评论带有违禁词的统一当做垃圾评论处理,存在误判的话可以从垃圾箱中恢复。

参考:服务端配置 | Waline

设置 IP 黑名单

最近存在沙币乱评论,得试试黑名单功能了

配置方法和设置违禁词一样:

1
2
3
4
module.exports = Application({
// 黑名单
disallowIPList: ['4.4.4.4'],
});

参考:服务端配置 | Waline

使用 Turnstile 验证码服务

Turnstile 服务注册

Cloudflare Turnstile 是一款替代 CAPTCHA 的免费工具,相比于谷歌 reCAPTCHA,它不需要繁琐的选择红绿灯消防栓之类的交互。

根据网站提示自己注册一个。

image.png

配置时安全域名需要同时添加网站地址和 Waline 服务端地址(不包含传输协议,即 http://https://)。

image.png

记住这两串 KEY,待会配置需要用到:

image.png

注意,打算关闭 Turnstile 时服务端环境变量和客户端配置要同时删去。免去不必要的错误 [1]

服务端配置

以 Vercel 部署方案为例

打开 Vercel 中 waline 服务端项目的环境变量设置,新建这两个环境变量并输入对应的值。

image.png

环境变量名 解释
TURNSTILE_KEY Turnstile key,须与客户端同时配置
TURNSTILE_SECRET Turnstile secret,服务端使用,不可泄漏

环境变量配置好后建议执行 Redeploy。

客户端配置

以 Hexo-Butterfly 主题为例

Butterfly 主题配置文件 waline 部分为:

1
2
3
4
5
6
waline:
serverURL: # Waline server address url
bg: # waline background
pageview: false
option:
turnstileKey: '0x4AAAAAAAXXXXXXXXXXX' # 这里填写你的 turnstile site key
请注意保持 waline.js 为较新版本,否则会出现未知错误

比如,在 Butterfly 主题配置文件使用 waline.js 的 cdn 链接版本至少为 https://mirrors.sustech.edu.cn/cdnjs/ajax/libs/waline/2.15.7/waline.min.js 。之前使用 2.15.1 版本会出现报错。

部署好后尝试评论,可以在 cloudflare 查看监控数据。

参考:

使用自己的 Askimet 反垃圾评论服务

Waline 默认开启了 Askimet 反垃圾评论服务,调用了 Waline 提供的 Akismet API Key。

如果需要的话,我们也可以注册一个自己的:

更多

为了给站长留足充分的时间处理恶意用户携带的危险链接,中间页的插件必不可少。强烈推荐阅读这篇文章:Hexo 博客与 Waline 评论区实现外链跳转中间页


  1. [Bug]: 未登录用户评论时报Forbidden提示 Issue #2427 · walinejs/waline (github.com) ↩︎