去评论
dz插件网

discuz新增 UCenter添加OnlyRemoteAddr属性

admin
2020/07/08 10:15:42
考虑到近期针对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中添加以下代码即可开启。
  1. define(<font color="rgb(221, 17, 68)">'UC_ONLYREMOTEADDR'</font>, true);
打开 uc_client/model/base.php 和 uc_server/model/base.php
找到
  1. 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;}
替换为
  1. 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;      }}