找回密码
 欢迎注册
楼主: wayne

[公告] 新注册用户改成了人工审核了

[复制链接]
发表于 2025-4-15 14:04:11 | 显示全部楼层
我比较担心,“稍微麻烦点的问题”,不是每个人都能轻易解决的,恐怕把许多想正常交流的拦在门外了。

其实,现在的问题点不是注册的限制问题,而是注册后如何防止滥发帖的管理问题,要找到根源堵好漏洞。

之前,我曾将新注册用户,禁止发帖时段设定为 22:15 ~ 7:45,
昨天发现该设置被缩短了(造成不坏好意者清晨来攻击),我马上又恢复了。

点评

nyy
怎么缩短了?是黑客修改了你的后台规定吗? 难道你被黑了吗?  发表于 2025-4-15 14:22
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-4-15 14:46:45 | 显示全部楼层
最近三天的广告贴主要是新用户注册导致的。先解决这个问题。
---------------------------
作为数学爱好者纯手工计算的算力来说,问题难度都是中等偏下。
再加上,现在有数学软件工具和大模型的加持,尤其是大模型。 感觉正常的人应该都会想到这两个求助方式。
如果自己做不出来,然后又不会用数学软件工具,或者求助大模型, 我感觉基本上可以判定这个人是不太常规的。咱们论坛要的是正常人。
我记得B站的注册非常麻烦。如果我这样的解释还是不到位的话,那我就取消这种限制。这个是目前设置的题目:

Screenshot 2025-04-15 at 15.12.56.png

---------------------------
至于注册后滥发帖的问题,多半是因为密码泄露。这个我们没办法。
但是从真人的行为模式上分析,我们可以杜绝广告的滥发,比如一个人一天发帖数不超过100个。两个帖子的时间间隔不会短于1分钟,短于1分钟,基本上可以归并到 编辑上一个帖子的操作,而不是再发一个新帖子。等等等。


---------------------------

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-4-15 15:39:26 | 显示全部楼层
其实我个人倾向于放弃discuz, 毕竟discuz不仅是上古时代的技术选型和开发语言,还是官方的弃子。
我们可以找一下替代的方案。我不担心论坛框架不同导致 帖子内容格式的不兼容,因为帖子的迁移本质上是一个字符串处理的过程,稍微写点代码就能解决。
我们最需要考虑的是论坛框架的成熟度和灵活度。

点评

主要是php的问题。我发现基于php的漏洞最多。比如还有一个大名鼎鼎的wordpress,简直是漏洞大王  发表于 2025-4-15 16:37
点左下角的链接,[url=https://www.discuz.vip/]Discuz![/url],似乎还比较活跃,近期还有推出开源版本计划。  发表于 2025-4-15 16:02
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-4-16 08:14:51 | 显示全部楼层
增加了难度稍大的注册验证问题,换回邮箱自动审核,好像也没问题了。问题的根源可能在于新用户注册的验证问题过于简单。

这个突然间就豁然明朗了,问题太简单的话,爬虫程序很容易自动完成这个验证过程。

点评

问题的关键是解决问题,解决问题只需要 打破攻击链路的任何一环  发表于 2025-4-16 16:11
这个我在8#的时候做了解释。  发表于 2025-4-16 15:51
问题关键,并不在于会员注册验证,而是为何新注册会员,短期内可发天量帖子  发表于 2025-4-16 13:49
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-4-16 09:17:40 | 显示全部楼层
换一个问题:比如下列哪几用户是本论坛的管理员?
让用户6选2。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2025-4-16 16:32:18 | 显示全部楼层
看郭老大还在疑惑 短期内为啥可发天量帖子,那我来总结一下我理解的这次广告攻击最有可能的设计思路和全过程。

1)先导的常识
我们知道,作为程序员,只要拥有一个网站的合法账号,我们是可以轻轻松松用程序来发帖的。就是HTTP RESTFUL的那一套,全程都可以代码驱动,无需任何的人工干预。顶多在发帖或者注册账号等某个环节 出现了真人验证,需要人工填入,而不是机器自动填入。而恰恰碰巧,php是上古时代的产物,验证问题都很简单。大多数论坛的配置的默认验证问题就是2位数的加减法,所以这个验证问题是可以程序获取,字符串解析提取一下2+8=?这种表达式,并自动计算填入的。
2)假设这种情况
假如某个php高手熟读了 discuz的代码,发现了discuz的代码的某个设计缺陷。打个比方,比如对用户发帖数的限制是通过读取网页前端的参数完成的,而不是用户每发帖一次,就实时的读一次内存的数据(某个全局的单例变量),或者后台的数据库的参数。
作为敏锐的程序猿,应该知道,网页前端的控件是给人看的,不是给程序用的(程序的API调用)。这是一个很好的信号,于是,他就可以设计一个具体的攻击流程。怎么设计呢,这取决于他的动机。他如果是对郭某某有私仇,并且知道郭某某的某某网站如果攻陷了就会有巨大的经济损失,这种情况是单点定向的攻击,显然,咱们遇到的肯定不是这种,咱们是非营利的论坛,而且郭老大人品这么好。那一定是无差别攻击了,无差别攻击那就是嗅探攻击。批量扫描一个ip范围的web服务,发起某个discuz相关的请求,发现应答符合discuz的行为特征,那么就可以判定这个是一个discuz服务。接下来只需要调用专为discuz设计的固定的程序代码就行。我在自己的服务器上故意写了一个tcp服务,每有一个客户端连接上来,就打印客户端的类型,每天我都能看到大量的嗅探攻击,都是测试各种服务的,比如rdp,http,rtp,hadoop,postgresql的,

那无差别的嗅探攻击时要扫描大量的ip地址的,所以不大可能在某一个具体的网站浪费过多的时间,做过多的攻击设计,比如不同的网站有不同的配置参数,比如还要设计如何攻击数据库的权限。所以采取新建账号是他时间成本最低的选择,至此攻击设计的思路已经完成。。。
。。。

3)如何规避这种无差别攻击
知道大概的攻击原理,就知道如何规避了。
3.1)论坛的后台参数都尽量避免用默认的设置参数,每改一个默认参数,都有可能打破攻击代码的任何一个脆弱的环节。
3.2)重视网站的真人验证

点评

感谢扫盲,受益匪浅。比如,已将站点注册地址 mod 值,从默认的“register”改为“enroll”  发表于 2025-4-23 10:31
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-4-22 07:27:32 | 显示全部楼层
最笨的办法就是用手机号注册,
手机收取验证码成功才能注册。

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-4-22 09:52:30 | 显示全部楼层
不管什么注册,发第一帖不用网页验证码,也不用手机短信验证码.发第二贴必须用手机短信验证码,两贴之间间隔5分钟.这对那些大佬们及喜欢学术讨论的人发帖受限制而不舒服,但对广告拦截效果较好.
电影字幕库就是这样的,搜索下载第一个字幕,跟平常一样,第二次搜索,就需要验证了,不能批量下载.它不能批量下载,你整个不能批量上传
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-4-22 10:43:35 | 显示全部楼层
豆瓣电影网站,这几年我对它多次采集,每隔几个月它的规则都在变化.最初我用八爪鱼采集,一次可以采集一万个网页,后面的每分钟不能达到15个网页,达到就被封网24小时,人工也打不开.现在一个小时采集达到500个网页就封网了.

下面的,ai说的话,仅供参考.
针对Discuz论坛遭受的大规模广告攻击问题,以下是系统性解决方案,分为紧急处置、中期防护和长期迁移三个层面:

一、紧急处置措施(立即执行)

注册环节强化

启用邮箱+手机双验证注册(需人工审核)

添加解方程验证码,因子分解验证码等难度属于初中以上的内容

设置注册时间冷却(如30分钟内仅允许1次注册)

发帖限制策略

  1. sql
  2. -- 数据库直接执行以下限制(示例)
  3. UPDATE pre_common_usergroup SET
  4.     maxspm = 5,  -- 每分钟发帖数
  5.     maxposts = 20, -- 每日发帖上限
  6.     allowpost = 0 WHERE groupid = 4; -- 禁止新用户组发帖
复制代码

实时内容过滤

安装第三方关键词过滤插件(如「防水墙」)

设置敏感词自动屏蔽(包含联系方式、特殊符号等)

二、技术防护升级(24小时内可实施)

行为分析防御

  1. php
  2. // 在source/class/class_member.php中添加注册行为检测
  3. if($this->membercount > 50 && time() - $firstreg < 3600) {
  4.     $this->denyRegister('疑似批量注册');
  5. }
复制代码

动态验证机制

对高频操作启用滑动验证(如geetest)

关键操作添加TOTP动态口令(如每60秒变化)

日志监控体系

  1. bash
  2. # 定时清理脚本(crontab每小时执行)
  3. grep 'register' ./data/log/* | awk -F'|' '{print $2}' | sort | uniq -c | sort -nr | head -50
复制代码

三、数据迁移方案(中长期)

框架选型建议

现代化论坛:Flarum(PHP)/ Discourse(Ruby)

高性能方案:NodeBB(Node.js)

国内替代:StartBBS(PHP)

数据迁移脚本示例(Python)

  1. python
  2. import pymysql
  3. from xml.etree import ElementTree as ET

  4. # Discuz数据导出
  5. dz_conn = pymysql.connect(host='localhost', user='dz_user', password='dz_pass', db='discuz_db')
  6. dz_cur = dz_conn.cursor(pymysql.cursors.DictCursor)
  7. dz_cur.execute("SELECT * FROM pre_forum_post WHERE dateline > UNIX_TIMESTAMP()-86400")

  8. # 转换为新论坛格式
  9. new_posts = []
  10. for post in dz_cur:
  11.     new_post = ET.Element('post')
  12.     ET.SubElement(new_post, 'title').text = post['subject']
  13.     ET.SubElement(new_post, 'content').text = post['message']
  14.     new_posts.append(new_post)

  15. # 保存为迁移文件
  16. with open('migrate.xml', 'wb') as f:
  17.     f.write(ET.tostring(new_posts))
复制代码

四、高级防御建议

网络层防护

启用Cloudflare的Bot Management服务

设置ASN过滤(屏蔽IDC机房IP段)

机器学习方案

  1. python
  2. # 使用简单贝叶斯分类器示例
  3. from sklearn.naive_bayes import MultinomialNB
  4. clf = MultinomialNB()
  5. clf.fit(train_data, train_labels)  # 训练历史数据
  6. predictions = clf.predict(new_posts)  # 实时预测
复制代码

法律手段

对广告主域名进行whois查询

向主机商提交滥用投诉(需保存完整日志)

建议立即执行第一阶段的紧急措施,这些修改可以在不升级Discuz的情况下通过数据库直接操作和简单代码调整实现。同时推荐安装「防灌水」插件(如https://addon.dismall.com/plugins/tshuz_protect.html),这类插件通常包含成熟的规则引擎可以拦截90%以上的自动化攻击。

对于持续攻击的情况,应当考虑在Nginx层面添加速率限制:

  1. nginx
  2. http {
  3.     limit_req_zone $binary_remote_addr zone=postlimit:10m rate=1r/s;
  4.     server {
  5.         location ~* /forum.php {
  6.             limit_req zone=postlimit burst=5;
  7.         }
  8.     }
  9. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2025-4-22 17:03:19 | 显示全部楼层

启用Discuz内置防御机制

修改 config_global.php 文件中的 attackevasive 参数,通过组合数值限制异常请求:
  • 1(Cookie刷新限制):同一Cookie每秒刷新超过1次则限制访问,防止高频请求。
  • 2(限制代理访问):阻止通过代理IP发起的攻击,降低代理池对服务器的压力。
  • 4(二次请求验证):用户需等待2秒后重新加载页面,过滤自动化脚本。
  • 8(回答问题):当第一次访问时需要回答问题,答案正确后才可以看到页面的具体内容。

已设置为1|2|4,兼顾安全性与用户体验

点评

全部取消,观察观察  发表于 7 天前
再恢复成2,因为4对搜索引擎不友好;Discuz! 程序版本升级到最新:Discuz! X3.5 Release 20250205 UTF-8  发表于 2025-5-25 18:02
因有被人瞬间发10096帖,所以再加强为 2|4  发表于 2025-5-22 08:16
再放宽为2  发表于 2025-5-12 10:33
改设置为2|4,取消高频访问限制了  发表于 2025-4-23 09:53
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2025-6-20 15:18 , Processed in 0.070046 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表