discuz新增 UCenter添加OnlyRemoteAddr属性
考虑到近期针对UCenter的密码穷举攻击增多,而UCenter默认接受代理IP的设置又让UCenter的密码错误次数超限锁定的安全策略无法正常生效。
本PR借鉴Discuz!X程序做法,为UCenter、UC_Client添加了OnlyRemoteAddr属性,在开启的情况下仅接受来自于TCP/IP协议栈的远程地址,保证密码错误次数超限锁定的安全策略正常生效。
由于此选项属于新功能(不破坏UC兼容性),因此是否合并还需综合考虑。
使用方法:按PR修改相关程序代码后,在UCenter配置文件(uc_server/data/config.inc.php)及uc_client/uc_client.php中添加以下代码即可开启。
- define(<font color="rgb(221, 17, 68)">'UC_ONLYREMOTEADDR'</font>, true);
找到
- if($cip && strcasecmp($cip, 'unknown')) { $this->onlineip = $cip;} elseif($xip && strcasecmp($xip, 'unknown')) { $this->onlineip = $xip;} elseif($rip && strcasecmp($rip, 'unknown')) { $this->onlineip = $rip;} elseif($srip && strcasecmp($srip, 'unknown')) { $this->onlineip = $srip;}
- if (defined('UC_ONLYREMOTEADDR') && constant('UC_ONLYREMOTEADDR')==true) { $this->onlineip = $srip;} else { if($cip && strcasecmp($cip, 'unknown')) { $this->onlineip = $cip; } elseif($xip && strcasecmp($xip, 'unknown')) { $this->onlineip = $xip; } elseif($rip && strcasecmp($rip, 'unknown')) { $this->onlineip = $rip; } elseif($srip && strcasecmp($srip, 'unknown')) { $this->onlineip = $srip; }}