写了个插件,可以防注水

写了个插件,可以防注水

搭建网站,我们必然要面对安全问题,如果网站安全无法得到保障,那危害肯定是不小。

其中,登录入口和评论区可以说是重灾区,一个是获得权限的地方,另一个是“塞垃圾”给你的地方。如果网站开放了注册,那这地方也是“塞垃圾”的地方。

WordPress自身也没有很多的防护措施(甚至连CSRF都没有),很多地方就几个代码就解决问题了:

import requests

while True:
    requests.post("https://example.com/wp-comments-post.php", data={
        "comment_post_ID": 114514,
        "comment_parent": 0,
        "comment": "鸡你太美",
        "author": "来干我呀!",
        "email": "cxk@example.com",
        "url": ""
    })

解决方案重要一点是设置人机验证码,也就是类似于这种:

不过这种安全性已经有点低了,因为现在的OCR已经很NB了,对于这种字母容易识别出来。如果变形的字母的话再加上AI识别,基本上形如虚设了。

而且有时候生成图片难以识别,用户硬是看了半天什么看不出来。最蛋疼的是刷新了还是看不出来,或者是本身是“9”结果用户看出是“q”之类的情况,导致屡次输错😂

于是就进化到现在大多数网站采用的:

Geetest™ 第四代行为验

别看这只是普通的拼图,实际上经过以下过程:

  1. 验证前,验证码组件的JS(已加密混淆)先收集浏览器各种数据(浏览器信息、JS Runtime信息、系统信息等),然后加密上传到验证服务器。
  2. 服务器AI判断用户是否安全(比如是否为自修改Chromium,是否为Selenium等),不安全可能直接不给验证;依据这些来决定给用户什么类型的验证码(拼图验证、文字点选、图标点选等,难度逐渐上升)还是直接通过。
  3. 用户开始验证,与此同时组件的JS会记录鼠标移动轨迹、点击点等动作数据,完成后加密上传到验证服务器。
  4. 服务器AI判断是机器完成还是人类完成,如果是人类完成返回token,表示验证成功。
  5. 将token填写到表单后发送到自己的服务器,服务器向验证服务器确认token是否有效,如果邮箱执行相关操作,如果无效拒绝操作

大家可以试着直接拿Postman撬我这边评论区,你们会收到错误的。

现在可用的平台有Geetest™腾讯™顶象™网易™易盾等,各个平台的免费版本我都比较一下,最终还是选择了顶象™,因此我也写了个插件,现在公测状态,欢迎大家下载使用!

https://github.com/250king/dingxiang-captcha

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注