帝国论坛帝国网站管理系统交流区帝国CMS使用交流原函数egetip()获取不了IPV6,推荐改法,还支持php8.0 【本版专题贴子】  
 1/2     1 2 ›› ›|
主题:原函数egetip()获取不了IPV6,推荐改法,还支持php8.0 [加入收藏夹]   

cighsen02
用户头衔:进士

精华贴   :0
发贴数   :970
经验值   :3686
注册时间:2009-09-29
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 1 楼]
原函数egetip()获取不了IPV6,推荐改法,还支持php8.0
1、原ip字段长度由20改39就行了

注意:很多会说直接去除正则,这个方法是可以正常获取,但时同也留下系统被就会注入风险。



/**
* 取得IP4或IPV6(php 7.4以上写法)
*
* 不合法回返空
* @return string
*/
function egetip(): string
{
        global $ecms_config;
       
        if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {

                $ip = getenv('HTTP_CLIENT_IP');
        }
        elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){

                $ip = getenv('HTTP_X_FORWARDED_FOR');
        }
        elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){

                $ip = getenv('REMOTE_ADDR');
        }
        elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){

                $ip = $_SERVER['REMOTE_ADDR'];
        }
        if($ecms_config['sets']['getiptype'] > 0){
            
                $ip = egetipadd();
        }
       
        return (substr_count($ip, ':') > 1 && false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) || false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? $ip : '';
}





/**
* 取得IP4或IPV6(php 5.6以上写法)
*
* 不合法回返空
* @return string
*/
function egetip()
{
        global $ecms_config;
       
        if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {

                $ip = getenv('HTTP_CLIENT_IP');
        }
        elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')){

                $ip = getenv('HTTP_X_FORWARDED_FOR');
        }
        elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')){

                $ip = getenv('REMOTE_ADDR');
        }
        elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')){

                $ip = $_SERVER['REMOTE_ADDR'];
        }
        if($ecms_config['sets']['getiptype'] > 0){
            
                $ip = egetipadd();
        }
       
        return (substr_count($ip, ':') > 1 && false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) || false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) ? $ip : '';
}



上传以下图片:


[该贴被修改 5 次,最后修改时间 2023-04-09 09:08:59 ]


要上就上安心站长 www.axzz.cn q:365182575
2023-03-22 11:12:07 已设置保密 顶部 回复 引用 报告 编辑 删除

cnnb
用户头衔:探花

精华贴   :0
发贴数   :5952
经验值   :16974
注册时间:2008-10-14
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 2 楼]

支持下




2023-03-23 07:44:08 已设置保密 顶部 回复 引用 报告 编辑 删除

pingpong
用户头衔:探花

精华贴   :0
发贴数   :9417
经验值   :24520
注册时间:2008-11-02
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 3 楼]

把返回正则替换去掉就可以




2023-03-24 07:44:19 已设置保密 顶部 回复 引用 报告 编辑 删除

cighsen02
用户头衔:进士

精华贴   :0
发贴数   :970
经验值   :3686
注册时间:2009-09-29
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 4 楼]

原帖由 pingpong 于 2023-03-24 07:44:19 发表
把返回正则替换去掉就可以

这个是没有错,外一传值不合法呢?你没有过滤,系统就会被注入,风险很大


(substr_count($ip, ':') > 1 && false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) || false !== filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) 这检测ipv4和ipv6合法性,可以放心用



要上就上安心站长 www.axzz.cn q:365182575
2023-03-25 13:46:51 已设置保密 顶部 回复 引用 报告 编辑 删除

zhxin
用户头衔:探花

精华贴   :0
发贴数   :3978
经验值   :10952
注册时间:2013-01-09
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 5 楼]

支持下




2023-03-27 07:55:20 已设置保密 顶部 回复 引用 报告 编辑 删除

pc500
用户头衔:举人

精华贴   :0
发贴数   :189
经验值   :1169
注册时间:2010-03-24
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 6 楼]

技术帖,支持



帝国专业建站,二次功能开发,帝国CMSbug修复
帝国CMS开发网:dgcms.cn
QQ:610712114
2023-03-27 11:59:36 已设置保密 顶部 回复 引用 报告 编辑 删除

bn899
用户头衔:进士

精华贴   :0
发贴数   :1574
经验值   :4330
注册时间:2015-11-30
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 7 楼]

支持




2023-03-28 07:57:24 已设置保密 顶部 回复 引用 报告 编辑 删除

miafei
用户头衔:书生

精华贴   :0
发贴数   :10
经验值   :59
注册时间:2019-06-06
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 8 楼]

支持,想问一下原ip字段长度怎么修改




2023-03-28 09:15:23 已设置保密 顶部 回复 引用 报告 编辑 删除

cighsen02
用户头衔:进士

精华贴   :0
发贴数   :970
经验值   :3686
注册时间:2009-09-29
信息 搜索 好友 发送悄悄话 精益求精-帝国网站管理系统7.5正式版开源发布】   [第 9 楼]

原帖由 miafei 于 2023-03-28 09:15:23 发表
支持,想问一下原ip字段长度怎么修改

长度改长一点就行



要上就上安心站长 www.axzz.cn q:365182575
2023-03-28 10:50:11 已设置保密 顶部 回复 引用 报告 编辑 删除

pingpong
用户头衔:探花

精华贴   :0
发贴数   :9417
经验值   :24520
注册时间:2008-11-02
信息 搜索 好友 发送悄悄话 免费开源-EBMA系统:更安全的MYSQL管理和备份系统】   [第 10 楼]

只去正则,不去过滤函数




2023-03-30 07:45:51 已设置保密 顶部 回复 引用 报告 编辑 删除
 1/2     1 2 ›› ›|

快速回复
内容

表情
使用EBB代码 使用smile代码 显示签名 自动分析url 自动分析img
     【进入高级模式】   (按 Ctrl+Enter 直接提交)
    顶部  加入收藏夹
关于帝国 | 广告服务 | 联系我们 | 法律声明 | 隐私条款 | 许可协议
Powered by: EBB Version 2.2.1