众所周知我的网站自24年开始就必须登录才能回复,最近有人直接调用WP的一个API接口可以直接发布垃圾评论而无需登录,这就让我很意外了。󠄐󠄹󠅀󠄪󠄡󠄨󠄞󠄩󠄧󠄞󠄡󠄤󠄞󠄩󠄡󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄧󠄦󠄧󠄡󠄡󠄦󠄡󠄦󠄬󠅒󠅢󠄟󠄮

翻看了网站日志,我才知道原理,于是我写了一个Python脚本进行复现。
Python脚本如下(目前我已经封堵了这个漏洞):󠄐󠄹󠅀󠄪󠄡󠄨󠄞󠄩󠄧󠄞󠄡󠄤󠄞󠄩󠄡󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄧󠄦󠄧󠄡󠄡󠄦󠄡󠄦󠄬󠅒󠅢󠄟󠄮
此处内容需要 评论文章 后刷新网页查看!
通过向 wp-comments-post.php 这个评论发布api直接发送POST请求,如果目标网站没有开启登录后才能发送评论,则直接可以发送评论。

于是就会出现开头的评论。
解决方法:
那么怎么封堵呢?
最简单的方法是在后台 - 讨论中 开启 用户必须注册并登录才可以发表评论 选项。

但是这个方案有一个问题,就是如果你不希望必须登录后才能回复,那么:
最直接的方法当然是直接将 wp-comments-post.php 里面的内容删除 或 die(‘随便什么内容’) 了

当然前提是不是该主题不直接调用wp-comments-post,否则会影响正常发布评论。
参与讨论