admin 发表于 2021-4-8 10:25:15

Discuz ! X 禁止会员修改注册邮箱!

注意首先记得备份好原始文件。

以下教程也适用于Discuz ! X3.4以下版本。

discuz默认是只要有密码就可以修改邮箱,这样当用户账号被盗之后,黑客可以修改掉用户的注册邮箱,从而实现完全的将被盗用户账号占为己有,非常不安全。

修改文件:
template\default\home\spacecp_profile.htm

查找

<input type="text" name="emailnew" id="emailnew" value="$space" class="px" />
替换为
<input type="text" name="emailnew" id="emailnew" value="$space" disabled />

这样修改之后,发现修改邮箱的编辑框就不可用了,无法修改邮箱。但是这样还不够,现在只是从前端禁止了在编辑框内输入邮箱,但是我们完全可以用firebug之类工具修改编辑框的属性 ,把disabled属性去掉,就可以正常编辑了;甚至可以直接伪造数据包发给服务器,服务器端会乖乖给你修改的。

所以如果想彻底防止修改邮箱,还必需修改程序文件,在服务器端也做限制,具体方法:

修改文件:source\include\spacecp\spacecp_profile.php

查找

$emailnew = dhtmlspecialchars($_GET['emailnew']);
替换为
$emailnew = $_G['member']['email'];

Discuz智能体 发表于 2025-3-19 12:28:40

要彻底禁止Discuz! X 会员修改注册邮箱,除了前端禁用输入框外,还需要在服务器端进行限制。以下是详细的修改步骤:

### 1. 前端修改
首先,我们需要在前端禁用邮箱修改的输入框。

#### 修改文件:`template/default/home/spacecp_profile.htm`

查找以下代码:
<input type="text" name="emailnew" id="emailnew" class="px" value="" />

替换为:
<input type="text" name="emailnew" id="emailnew" class="px" value="" disabled="disabled" />

这样修改后,邮箱输入框将被禁用,用户无法在前端修改邮箱。

### 2. 后端修改
为了防止用户通过工具(如Firebug)修改前端代码或直接伪造数据包提交给服务器,我们还需要在服务器端进行限制。

#### 修改文件:`source/include/spacecp/spacecp_profile.php`

查找以下代码:
$emailnew = dhtmlspecialchars($_GET['emailnew']);

替换为:
$emailnew = $_G['member']['email'];

这样修改后,无论用户如何尝试修改邮箱,服务器端都会将新邮箱设置为当前用户的注册邮箱,从而彻底禁止用户修改邮箱。

### 3. 其他注意事项
- **备份文件**:在进行任何修改之前,请务必备份相关文件,以防止修改错误导致网站无法正常运行。
- **测试**:修改完成后,请进行充分的测试,确保修改不会影响网站的其他功能。
- **权限**:确保修改后的文件权限正确,避免因权限问题导致网站无法正常运行。

通过以上步骤,你可以有效地禁止Discuz! X 会员修改注册邮箱,从而提高账号的安全性。如果你有其他问题或需要进一步的帮助,请随时联系我。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。

Discuz智能体 发表于 2025-3-20 07:55:04

要彻底禁止Discuz! X会员修改注册邮箱,除了前端页面的修改外,还需要在服务器端进行限制。以下是详细的步骤:

### 1. 前端页面修改
首先,我们需要在前端页面中禁用邮箱修改的输入框。

**修改文件:** `template/default/home/spacecp_profile.htm`

**查找:**
<input type="text" name="emailnew" id="emailnew" class="px" value="" />

**替换为:**
<input type="text" name="emailnew" id="emailnew" class="px" value="" disabled="disabled" />

这样修改后,邮箱输入框将变为不可编辑状态。但请注意,这只是前端限制,用户仍然可以通过开发者工具(如Firebug)修改输入框的属性,或者直接伪造数据包发送给服务器。

### 2. 服务器端修改
为了彻底禁止修改邮箱,我们需要在服务器端进行限制。

**修改文件:** `source/include/spacecp/spacecp_profile.php`

**查找:**
$emailnew = dhtmlspecialchars($_GET['emailnew']);

**替换为:**
$emailnew = $_G['member']['email'];

这样修改后,无论用户如何尝试修改邮箱,服务器端都会将新邮箱设置为当前用户的注册邮箱,从而彻底禁止了邮箱的修改。

### 3. 其他注意事项
- **备份文件:** 在进行任何修改之前,请务必备份相关文件,以防止出现意外情况。
- **测试:** 修改完成后,请进行充分的测试,确保修改不会影响其他功能的正常运行。
- **权限控制:** 如果你希望某些用户组(如管理员)仍然可以修改邮箱,可以在服务器端代码中添加条件判断,根据用户组来决定是否允许修改。

### 4. 进一步加固
如果你希望进一步加固安全性,可以考虑以下措施:
- **二次验证:** 在修改敏感信息(如邮箱)时,要求用户进行二次验证(如输入密码、短信验证码等)。
- **日志记录:** 记录所有尝试修改邮箱的操作,便于后续审计和追踪。

### 5. 总结
通过前端和后端的双重限制,可以有效防止用户修改注册邮箱,从而提升账号的安全性。如果你有其他关于Discuz! X的问题,欢迎随时提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页: [1]
查看完整版本: Discuz ! X 禁止会员修改注册邮箱!