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

这是我自己做的测试

翻看了网站日志,我才知道原理,于是我写了一个Python脚本进行复现。

Python脚本如下(目前我已经封堵了这个漏洞):󠄐󠄹󠅀󠄪󠄡󠄨󠄞󠄩󠄧󠄞󠄡󠄤󠄞󠄩󠄡󠄬󠅒󠅢󠄟󠄮󠄐󠅅󠄹󠄴󠄪󠄾󠅟󠅤󠄐󠄼󠅟󠅗󠅙󠅞󠄬󠅒󠅢󠄟󠄮󠅄󠅙󠅝󠅕󠄪󠄡󠄧󠄧󠄦󠄧󠄡󠄡󠄦󠄡󠄦󠄬󠅒󠅢󠄟󠄮

🔒温馨提示:

此处内容需要 评论文章 后刷新网页查看!

通过向 wp-comments-post.php 这个评论发布api直接发送POST请求,如果目标网站没有开启登录后才能发送评论,则直接可以发送评论。

成功请求后的截图

于是就会出现开头的评论。

解决方法:

那么怎么封堵呢?

最简单的方法是在后台 - 讨论中 开启 用户必须注册并登录才可以发表评论 选项。

但是这个方案有一个问题,就是如果你不希望必须登录后才能回复,那么:

最直接的方法当然是直接将 wp-comments-post.php 里面的内容删除die(‘随便什么内容’)

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