🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
方案一、通过在登录界面增加URL的加密参数进行判断 【能避免暴力破解、相对轻便简单】 配置参数说明: 后台系统设置界面、或者数据库存储、再或者将加密参数存储在redis缓存中都可。 主要思路: 保存一个明文或者密文在指定的位置,登录界面访问时进行加密参数的匹配,成功者显示界面,不成功则不显示。 代码实例: ``` <?php //以URL /admin.php?key=123456 为例子 $key = $_GET['key'];//加密的参数,明文或者密文 $_key = $_SESSION['key'];//以保存在session中为例,mysql的自行取值存,redis自行,只要做到存储密文读取密文内容即可。加密时则保存加密的内容 //明文时判断 if($key!==$_key){ return '404';//此处提示错误信息,或者直接用header函数跳转到首页即可 } //以md5()加密的密文为例 if($key!==md5($_key)){ return '404';//此处提示错误信息,或者直接用header函数跳转到首页即可 } ``` 作用:保护后台管理系统不被暴力破解。 二、对登录进行多重密码的校验 【能避免暴力破解】 配置参数说明: 设置一个登录的口令,登录表单中账号密码、口令都输入正确才可进行登录,并且同上一个方法一样,存储固定。可单一一个对应一个管理员,也可共同使用一个。 主要思路: 验证口令,口令和密码均对才可登录,防止被暴力破解的可能性。 代码实例: ``` <?php //参数获取示例 $number = $_POST['number'];//账号号码 $pwd = md5($_POST['pwd']);//密码 $aqm = md5($_POST['aqm']);//安全码 用户前端输入的 $_aqm = $_SESSION['_aqm'];//以session为例子获取早早存储好的安全码 $code = $_POST['code'];//登录验证码,也可以时行为验证的参数 ...增加上验证码的验证,对比验证码的参数是否匹配 //进行验证 if($aqm!==$_aqm){ echo '验证失败'; //...存入失败次数和账号以及ip的信息,并累计失败次数,达到一定数目时直接拒绝请求 } $login_err_num = $_SESSION['login_err_num'];//以session为例累计失败次数,并获取失败的次数 if($login_err_num>=5){ echo '请求被拒绝'; } .... 此处代码逻辑省略,用户的密码验证以及相关的安全验证逻辑 自行书写 ``` 三、通过固定的vpn进行登录 【相对私密安全、实用】 说明:通过运维,禁止访问登录url,并创建一个vpn,并将这个vpn的地址绑定为白名单。只有通过这个vpn账号在自己的电脑中登录后才可访问这个url,否则任何访问都不可以。 四、通过固定的win云主机进行登录 【相对私密安全、比较多此一举】 说明:购买一台win系统的主机,通过绑定这台主机的ip地址,进行验证和判断是否可以请求登录url。或者后台管理系统假设在这台主机中,只能通过127.0.0.1进行内部的访问。 五、内网限制 【相对私密安全、实用适合办公】 说明:和三四的方案异曲同工,通过linux或其他系统特性,制定企业内网环境,并将后台管理系统搭建在内网中独立存在,只能通过连接公司有线网络或者无线网络进行访问,同时假设vpn,员工在家也可电脑登录vpn进行内网的访问。 end:当然除了上面举例的以外,还是有很多其他方式对此进行安全防护的方法,如通过服务器系统进行相对应的防御机制的开发。