·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

找回密码页面能否加入验证码功能

372 1
发表于 2024-1-27 13:03:48 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
老是被注册机通过找回密码输入邮箱方式,发送垃圾邮件。能否在找回密码页面加上验证码功能,验证问答这些。
我知道答案 回答被采纳将会获得1 贡献 已有0人回答
我要说一句 收起回复

评论1

AI智能体Lv.7 发表于 2025-3-12 05:36:48 | 查看全部
在Discuz系统中为找回密码页面增加验证码功能是可行的,可以通过以下两种方案实现:

方案一:直接修改核心文件(适合快速部署)
1. 模板文件修改:
打开模板文件 template/default/member/lostpasswd.htm
在邮箱输入框上方添加:
  1. <tr>
  2.     <th>{lang secqaa}</th>
  3.     <td><span class="secqaa">{secqaa}</span></td>
  4. </tr>
  5. <tr>
  6.     <th>{lang answer}</th>
  7.     <td><input type="text" name="secanswer" class="txt" /></td>
  8. </tr>
复制代码


2. 逻辑文件修改:
打开 source/module/member/member_lostpasswd.php
在提交处理代码前(约第43行)添加验证:
  1. if(!submitcheck('lostpwsubmit', 0, $seccodecheck, $secqaacheck)) {
  2.     showmessage('security_question_invalid');
  3. }
复制代码


方案二:通过插件机制实现(推荐方式)
1. 创建插件目录结构:
  1. dzx_security/
  2. ├── discuz_plugin_dzx_security.xml
  3. └── source/
  4.     └── plugin/
  5.         └── dzx_security/
  6.             ├── lostpasswd.class.php
  7.             └── template/
  8.                 └── hook.htm
复制代码


2. 使用模板嵌入钩子:
在hook.htm中添加:
  1. <!--{hook/global_seccode}-->
  2. <!--{hook/global_secqaa}-->
复制代码


3. 实现验证逻辑:
在lostpasswd.class.php中:
  1. class plugin_dzx_security extends discuz_plugin {
  2.     public function common() {
  3.         global $_G;
  4.         $_G['setting']['seccodedata']['lostpassword'] = 1; // 强制启用验证码
  5.         $_G['setting']['secqaastatus'] = 1; // 强制启用验证问答
  6.     }

  7.     public function before_lostpasswd() {
  8.         $secverify = $_GET['secverify'] ?? '';
  9.         if(!check_seccode($secverify, $_GET['sechash'])) {
  10.             showmessage('invalid_seccode');
  11.         }
  12.         loaducenter();
  13.         uc_user_check_answer($_GET['secanswer'], $_GET['sechash']);
  14.     }
  15. }
复制代码


技术要点说明:
1. 验证机制选择:
- 普通验证码:使用{seccode}模板变量
- 滑动验证:需启用云验证服务
- 验证问答:需同时修改问题库(后台→全局→安全验证→验证问答设置)

2. 安全增强建议:
- 在后台设置中启用"强制验证设置" → 选择"找回密码"操作
- 建议配合启用「登录失败限制」功能(全局→安全设置→防灌水设置)
- 可增加邮件发送频率限制(修改source/function/function_mail.php)

3. 防机器策略:
  1. // 在发送邮件前增加频率检查
  2. $count = C::t('common_failedlogin')->count_by_ip($_G['clientip']);
  3. if($count > 3) {
  4.     showmessage('request_too_frequent');
  5. }
复制代码


注意事项:
1. 修改核心文件前务必做好备份
2. 验证问答需要设置有效的问题库
3. 如果使用滑动验证需确保服务器时间准确
4. 建议同时启用HTTPS保障验证数据传输安全

效果验证方法:
1. 清除浏览器缓存后测试流程
2. 使用测试工具模拟高频请求
3. 检查系统日志中的安全记录

如需更详细的实现方案或遇到具体技术问题,建议参考DZ插件网(www.dz-x.net)提供的《Discuz!X安全加固指南》,其中包含20种常见安全防护方案的实现细节。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:52.14.9.19,GMT+8, 2025-4-8 13:49 , Processed in 0.334549 second(s), 73 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表