gMIS吉米斯升级支持IPv4/IPv6双栈网络模式
今天是三八国际妇女节, 恭祝女同胞节日快乐!新冠肺炎疫情尚未解除,各自安好!
1. IPv6地址及与IPv4并存过渡的双栈网络模式
距离论文 IPv6 Address in Dot-Base62x 的发表差不多十年过去了,IPv6的应用也逐渐从学术论文到实验网,从实验网到工业部署和商业应用,终于IPv6的逐渐启用,开始由底至上的由网络层影响到应用层。
比如在 gMIS吉米斯 中,安全检查依赖对用户请求的IP的监测。当IP地址由IPv4向IPv6过渡时,应用层看到的地址,可能是IPv4,也可能是IPv6,尤其是在IPv6/IPv4双栈网络中(下图2),这种情况尤其明显。
例如,当我们在启用了IPv6的网络下,查看终端用户的IP时( -myip ),情况可能是这样:
Internet Protocol version 4 (IPv4)
120.244.128.xxx
Internet Protocol version 6 (IPv6)
2409:8a00:6055:b650:b5df:f4f3:36cd:xxxx
也即同一个用户,可能有两个IP地址,一个IPv4地址,一个IPv6地址,两者可能交替出现,在此前的部署应用中,如果侦测到用户IP地址发生改变,可能会有潜在的中间人攻击发生。面对新情况,需要更新升级程序处置这样由于网络层发生改变而引起的安全检测的 false positive alert.
2. gMIS吉米斯支持 IPv4/IPv6双栈模式的思路及实施
从纯技术上说,改进对一种新网络模式的支持,由原来的单用户单IP变成单用户多IP的支持,要改动的地方很多,难度也较大,甚至容易滋生新的安全漏洞等。
经反复比对各种实施方案,兹选取如下一种实施对gMIS吉米斯支持IPv4/IPv6双栈模式的改进。其主要思路时,当侦测到同一用户的IP地址发生改变时,将用户弹出系统,使用新IP再次验证一次,使得用户在新IP, IPv4 或 IPv6 下也获得同样的授权,如此以来,用户在两个IP下都进行了授权验证。在用户层,经过两次登录后,在接下来的操作中,网络层IP地址的切换,已经可以无缝衔接,自动漫游。
在系统中,分别将两次验证的授权Token以不同的名称记录到客户端,通常是 Cookie或请求地址的参数里,这样,当用户的IP再次漂移改变时,从Cookie中读取到读取到对应IP下的Token即可。
改动涉及到的程序文件:
A. comm/header.inc
根据已经读取到的IP地址,判断是IPv4或者IPv6,并将判断结果标记记录到运行时环境变量中去。也即 $_CONFIG 中。
B. extra/signinup
在通过用户授权验证,进行Cookie或请求参数写操作时,如果当前网络为 IPv6,则在原Token名称后附带形如 “v6” 的标记。
C. inc/session.class
在进行用户请求的鉴权时,通过Cookie或请求参数等读取Token,如果当前网络为 IPv6,则在原Token的名称后附带形如 “v6” 的标记。
扩展开来,推而广之地看,IPv6/IPv4的共存过渡阶段,双栈模式下,所有上层应用基于用户单一IP考虑的地方,都需要进行这方面的调整。这技术是IT/互联网届的又一个类似 “千年虫/2000年/千禧蟲” 的问题。
基于IP地址的安全核验,需要修改考虑这种新情况,类似上述分析与升级改进。
基于IP地址的用户识别,需要改进;基于IP地址的统计,基于IP地址的位置识别,基于IP地址的资源调度….
所有的IT及互联网应用软件系统,都需要重新审视由单用户多IP产生的新问题,而且越早越好,越快越好,因为IPv4/IPv6的共存和过渡阶段,目前来看会是一个相当长的过程,也许是10,20年,甚至是50年。
额外地,关于 IPv6 Address in Dot-Base62x 的应用,
例如在启用了IPv6的家用网关路由器(Home Gateway)或者光猫一体机(Fibre Modem + Router)中,默认的Web管理控制台的IPv4地址的访问路径通常为:
http://192.168.1.1/ 或者 http://192.168.0.1/
其对应的IPv6地址的访问路径通常为:
http://[fe80::1]/ 或者 http://[fe80:0:0:0:0:0:0:1]/
显然地,后者IPv6地址的访问路径看起来不友好,也有些费解,增加了中括号[]用于括起来IPv6地址,同时冒号:不单独特指网络服务的端口号,也可能是IPv6地址的一部分。
相应地,如果上述IPv6地址( fe80::1 或者 fe80:0:0:0:0:0:0:1 ) 用Dot-Base62x 来表示的话,则其形式如下:
http://x3e00.0.0.0.0.1/
只此一种,明确无误,没有简写变项,也兼容目前所有网络协议规范,不需要引入中括号[], 也不会影响冒号:用来特指网络服务的端口号的定义。
在形式上,与IPv4一样,使用点号.来区分地址段,不同的只是长度上多了两个地址段. 这也是实际意义上的增长,IPv4由四段组成,IPv6地址由6段组成.
同样地,上述终端用户IPv6地址,
Internet Protocol version 6 (IPv6)
2409:8a00:6055:b650:b5df:f4f3:36cd:xxxx
也可以表述成 Dot-Base62x 的地址形式为:
xxxx.xxxx.xxx.yyyy.yyyy.yyy
这是推荐使用 IPv6 Address in Dot-Base62x 的主要原因之一.
3. gMIS吉米斯相关的更新改进
A. 改进连接数据库时进行长连接的操作;
B. 改进对数据表记录状态默认值的描述,增加了”其他”选项等;
C. 改进了写用户终端Cookie的操作,增加了失效时间和有效路径范围.
D. Next @todo, 使用模板引擎 -Hanjst 替换掉 Smarty .
-gMIS (general Management Information System,吉密斯) 是一种基于 -GWA2 (General Web Application Architecture,吉娃兔) 的通用管理信息系统应用软件,具有可配置的输入和输出接口、开箱即用等特征。
可以在 gMIS吉米斯 上构建各种管理信息应用系统软件,例如:
内容管理系统(CMS), 客户资源管理(CRM), 企业资源计划管理(ERP),
办公自动化系统(OA)等,
也可以是各种行业应用管理系统软件,例如:
人力资源管理系统(HR),学生管理,档案管理,旅游管理,图书管理,
商品管理及业务运营支撑系统(BOSS)等等。
gMIS吉米斯 能够实现零代码开发、数分钟内快速搭建各种管理信息系统(MIS, Management Information System).
-gMIS is a -GWA2 based Management Information System (MIS) software with characteristics like configurable input and output interfaces, open-box-to-use.
Various management application software systems can be built on it, such as
Content Management System (CMS), Customer Resource Management (CRM), Enterprise Resource Planning Management (ERP),
Office automation systems (OA), as well as different industry application management system softwares, such as
Human Resource Management System (HR), Student Management, Archive Management, Tourism Management, Book Management,
Commodity management and business operations support systems (BOSS), etc.
With zero code development, -gMIS can build a set of management information systems (MIS) software in a few minutes.
Lower Costs,
Better Productivity.
降低成本,
提高效率.