EyouCMS后台暴力破解防不住?快加登录次数限制锁安全后台
时间:2026年05月27日 03:41:18
来源:易频IT社区
你有没有发现刚搭好的EyouCMS小站,没几天后台就有一堆陌生IP在疯狂试账号密码?别慌,这事儿不是你服务器太菜,大概率是你忘了加一道原生就能搞定的登录次数限制防护墙。
今天就唠唠这事儿,不用找复杂的第三方插件,改几个小地方就能把后台焊得死死的。
先找到对应文件路径,别瞎翻,直接去你的网站根目录下的`/application/admin/controller/Login.php`,这个就是处理后台登录逻辑的核心文件,找对地方就成功一半了。
打开文件,搜索`// 验证成功`,大概在一百多行的位置?每个版本可能差个几行,找到就行。先别急着动验证成功的代码,往前翻找验证失败的逻辑分支,一般是`else if`开头,或者单独处理验证错误的地方。
验证失败的地方,原本只会给你返回个错误提示,比如“账号密码错误”或者“验证码错误”,现在我们要给它加一个“试错次数记录+锁定”的buff。
怎么加记录呢?用EyouCMS自带的缓存机制就行,不用建数据表那么麻烦,省事得很。在验证失败的代码块最前面,插入一段获取和设置缓存的代码:
```php
// 获取当前IP的试错缓存
$failKey = 'admin_login_fail_' . get_client_ip();
$failCount = cache($failKey) ? cache($failKey) : 0;
// 试错次数+1
$failCount++;
// 设置缓存时间,比如1小时后自动清空,给人点改过自新的机会
cache($failKey, $failCount, 3600);
```
加好记录,接下来就是锁了。设置一个自己能接受的试错阈值,比如5次,超过直接不给登录,还可以加个提示说“请1小时后再试”。
那这段锁的代码放哪儿?要放在获取试错次数之后,真正验证账号密码之前,别等人家试到第6次才锁,没意义。把这段加上:
```php
// 试错超过5次直接拦截
if ($failCount > 5) {
$this->error('登录失败次数过多,请1小时后再尝试!');
}
```
哦对了,还有个小细节,验证成功之后得把缓存清掉,不然下次自己输错一次就开始算第6次,那可太坑自己了。找到刚才的`// 验证成功`,在后面加一句:
```php
// 验证成功清除试错缓存
cache('admin_login_fail_' . get_client_ip(), null);
```
改完这些,记得把文件保存,覆盖原来的Login.php就行。覆盖前最好备份一下,万一手滑打错字还能救回来。
现在去后台试试,故意输错5次,第6次就会弹出提示,完全登不进去,IP换了也没用,除非等1小时缓存自动失效。