一种基于网络隔离结构的网站数据防篡改方法
发明领域
本发明涉及一种基于网络隔离结构的网站数据防篡改方法,通过利用网络隔离思想及单向的数据库同步技术,实现对网站动态内容的保护,属于信息安全技术领域。
背景技术
由于Web应用***的复杂性及Web服务器软件版本的多样性,网络***漏洞层出不穷,而传统防火墙、入侵检测手段无法有效防范黑客利用软件漏洞获得网站管理权限后对网站内容所做的篡改,各种网页防篡改***应运而生,目前所使用的网页防篡改***技术有:
网页特征校验:这种方式首先通过某种算法,获得网页原始特征值,再通过人工或程序跟踪对比网页特征值的变化,一旦和原始值不同,即判断网页内容发生了变化,被恶意修改。这种技术目前使用较少,一方面原因是随着网站内容的增多,网页文件也越来越多,通过逐一比较网页特征值所消耗的资源也越来越多;另一方面,由于动态内容的广泛应用,用户所获取的网页内容大多是通过资源数据库及某些固定页面动态生成的,这使得网页特征的获得变得不可能。
基于操作***的文件保护技术:利用操作***底层驱动,通过事件触发方式来监控文件内容是否被修改。这一技术与第一种技术的区别在于将隔时网页校验或人工对网页的校验转为利用操作***本身的事件触发机制,通过从操作***层监控文件修改行为,可以极大地降低***的资源消耗,有效提高对非法篡改行为的监控效率。
专利“一种防止网页被篡改的***及方法”(专利号:CN101778137),专利“基于操作***底层防发布文件篡改的网页安全发布***”(专利号:CN1349163),专利“驱动级网站防篡改架构”(专利号:CN201054604),专利“基于前置网关的页面防篡改方法和***”(专利号:CN102176722)都是基于以上两种思路提出的防止网站内容被非法篡改的不同方法。
范建华、宋云波等发表在《成都信息工程学院学报》2009年第24卷第四期的“一种基于E-Key及Web页面监控的网站防篡改机制研究”一文主要增加了对管理人员身份的认证,保证了管理人员修改***设置时的安全性。在防止网站内容篡改方面的思想与前面总结的类似。
上述网站防篡改***无法应对诸如成绩查询、考分查询、违章信息查询等数据查询类的网站,由于大量数据资源保存在数据库中,该类网站防篡改***无法对保存在数据库中的数据进行保护。近年来,出现过多起针对这一类型网站的攻击行为,犯罪分子采取黑客手段,入侵国家级教育网站和多所高校网站,篡改证书号码数据库,添加自己制作的假证书的编号。由于在正规网站上能够查询到证书号,这些假证就成为了有案可查的“真证书”,从而达到牟利的目的。
发明内容
本技术方案所述一种基于网络隔离结构的网站数据防篡改方法,用于实现对使用动态网页技术的网站的防篡改保护。通过划分不同的安全级别网络,将保存网站数据的数据库服务器置于高安全级别网络中,并将数据库内容单向发布到与互联网相连的网络,即低安全级别网络的数据库服务器中,有针对性地保护与互联网相连的低安全级别网络中的网站数据,该方法可以有效防止诸如SQL注入等针对数据库的攻击,确保数据安全。
所述防篡改保护是指针对恶意用户非法获取网站数据库管理权限后修改所述网站数据库数据内容的一种防止非授权修改保护,所述网站数据防篡改保护方法是在一个由内网、网站数据防篡改***以及外网三者依次相连而构成的网络中,依次按以下步骤实现的:
步骤(1),构建一个所述的网站数据防篡改网络,其中:
内网,由一个具有较高安全级别的内网网站数据库以及一个向所述内网网站数据库提交数据的网站后台管理服务器构成,其中:
内网网站数据库,设有:内网网站数据表和增量数据表,其中:
内网网站数据表:内建一个事件触发器,当所述内网网站数据表中的数据变化时,该事件触发器把变化的数据写入增量数据表中,
增量数据表,存储所述事件触发器捕获的内网网站数据库表中的数据变化信息,所述增量数据表包括如下字段:更新时间、获取时间、SQL命令、内网网站数据表变化数据、获取数据操作标识和数据唯一性标识,所述增量数据表中的更新时间、获取时间、SQL命令、内网网站数据表变化数据和数据唯一性标识字段内容构成增量数据,其中:
●更新时间:所述网站后台管理***提交数据的时间,
●获取时间:所述网站数据防篡改***中内网主机的数据获取模块访问所述增量数据表,并保存所访问到的数据记录的时间,
●SQL命令:所述网站后台管理服务器提交数据时所执行的操作,
●内网网站数据表变化数据:所述事件触发器所捕获的内网网站数据表中变化的数据,
●获取数据操作标识:标识网站数据防篡改改***中的数据获取模块,是否成功获得所要访问的数据记录,包括:“未获取”、“获取中”和“已获取”三种状态,
●数据唯一性标识:由所述数据获取模块采用MD5算法计算得出,MD5算法的输入参数由以下字段中的字符串构成:“所述更新时间+所述SQL命令+所述内网网站数据表变化数据”,以标识所述增量数据的唯一性,
外网,由一个具有较低安全级别的外网网站数据库以及一个外网Web服务器构成,其中:
外网网站数据库,是所述的外网Web服务器中动态内容存储介质,设有:待更新数据表、外网网站数据表以及待校验增量数据表,其中:
待更新数据表,包括如下字段:更新时间、获取时间、SQL命令、内网网站数据表变化数据、发布数据操作标识和数据唯一性标识,其中:
●更新时间:所述网站后台管理***提交数据的时间,
●获取时间:所述数据获取模块获得该条数据的时间,
●SQL命令:所述网站后台管理***提交数据的操作,
●内网网站数据表变化数据:所述事件触发器所捕获的内网网站数据表中变化的数据,
●发布数据操作标识:标识网站数据防篡改***中外网主机的数据发布模块是否成功发布该条数据记录,包括“未发布”、“发布中”和“已发布”三种状态,
●数据唯一性标识:由所述数据获取模块采用MD5算法计算得出,
外网网站数据表,设有事件触发器,当所述外网网站数据表中的数据变化时,该事件触发器把变化的数据写入待校验增量数据表,
待校验增量数据表,存储所述事件触发器捕获的外网网站数据库表中的数据变化信息,所述待校验增量数据表包括如下字段:更新时间、SQL命令、外网网站数据表变化数据和原始数据唯一性标识,其中:
●更新时间:所述网站后台管理***提交数据的时间,
●SQL命令:所述网站后台管理***提交数据的操作,
●外网网站数据表变化数据:所述事件触发器所捕获的外网网站数据表中变化的数据,
●原始数据唯一性标识:由所述数据获取模块采用MD5算法计算得出,
网站数据防篡改***,设有:内网主机,外网主机以及连接所述内网主机和外网主机以便所述增量数据由所述内网主机向外网主机单向发送的相互连接的内网主机通讯卡、外网主机通讯卡,其中:
内网主机,设有数据获取模块和数据变化监测模块,其中:
数据获取模块,设有:内网网站数据库所述增量数据表的访问权限,还设有:所述内网网站数据表数据变化消息的输入端、所述增量数据表内数据记录查询命令的输出端、所述增量数据的输入端以及外网网站数据库初始化命令的输出端,还有把所述增量数据文件发往所述外网通讯卡的增量数据文件输出端,获取内网网站数据表全部数据记录命令的输出端以及所述内网网站数据表数据的输入端,
数据变化监测模块,设有:所述内网网站数据表数据变化的查询命令输出端,数据变化消息的输入端以及内网网站数据表数据变化消息的输出端,
外网主机,设有:数据更新模块、数据发布模块和数据防篡改模块,其中:
数据更新模块,设有:对所述外网网站数据库内待更新数据表的访问权限,还设有:接收来自所述数据获取模块发送的增量数据文件的输入端,所述增量数据文件为增量数据的文件存储形式,还设有请求数据发布命令的输出端以及发往所述待更新数据表的增量数据输出端,
数据发布模块,设有:对所述外网网站数据表的访问权限,还设有:所述外网网站数据库初始化命令的输入端,请求数据发布命令的输入端,发布数据的输出端,所述发布数据是指根据所述待更新数据表中SQL命令字段及内网网站数据表变化数据字段中的内容,对所述外网网站数据表执行相应的SQL命令,以及外网网站数据表操作命令输出端,控制数据发布输入端,数据记录唯一性标识输出端,
数据防篡改模块,设有:对外网网站数据库的管理权限,对所述待校验增量数据表访问权限,还设有:控制数据发布的命令输出端,所述数据唯一性标识的输入端,管理外网网站数据库的命令输出端,所述外网网站数据库管理信息的输入端,所述外网网站数据表数据变化的查询命令输出端,所述待校验增量数据表中数据记录输入端,所述待校验增量数据表内数据记录查询命令的输出端,以及终止外网网站数据库服务的输出端,并依次按以下步骤进行防篡改保护:
A:外网网站数据库用户保护
a:在完成所述外网网站数据表中的事件触发器及对外网网站数据表的访问权限设置后,查询外网网站数据库中的所有用户,密码,角色,并将“用户名+密码+角色”字符串作为MD5算法的参数,计算用户信息特征值,并保持该特征值Mbase,当修改所述外网网站数据库用户权限设置时,将更新Mbase取值,
b:定时查询外网网站数据库中的所有用户,密码及其角色,并依据所述MD5算法计算用户权限特征值Ncal,
c:对比Ncal和Mbase,二者一致表示所述外网网站数据库安全,不一致表示所述外网网站数据库中用户,密码或角色发生了变化,数据库可能被入侵,告警,并向外网网站数据库提出终止服务的请求,
B:数据防篡改
a:所述数据防篡改模块定时查询所述待校验增量数据表,检测到待校验增量数据表中数据记录变化后,判断是否从所述数据发布模块收到了新的数据唯一性标识:
若没有,则表明外网网站数据表中出现了非授权修改,便告警发出控制命令,命所述数据发布模块发出删除命令,删除所述外网网站数据表中新增加的数据记录,同时终止外网网站数据库服务,
若所述数据发布模块发送的数据唯一性标识与查询结果中所述待校验增量数据表相应数据记录的原始数据唯一性标识一致,表示数据发布模块发布了带有该唯一性标识的数据信息,则执行步骤b,
b:将待校验增量数据表对应数据记录的如下字段内容构成一字符串作为MD5算法的输入参数:“所述更新时间+所述SQL命令+所述内网网站数据表变化数据”,用MD5算法计算该外网网站数据表变化数据的唯一性标识,并与待校验增量数据表对应数据记录的所述原始数据唯一性标识字段中的内容进行对比,如果二者一致,则不向数据发布模块发布所述控制命令,若两者不一致,则告警,向所述数据发布模块发布所述控制命令,令其删除所述外网网站数据表中的新增数据记录,并向外网网站数据库提出终止服务的请求,
步骤(2),所述网站数据防篡改***依次按以下步骤完成所述内网网站数据库和外网网站数据库的数据初始化同步,
步骤(2.1),所述数据获取模块向所述数据发布模块发送“外网网站数据库初始化”命令,
步骤(2.2),所述数据发布模块依所设置的访问权限连接所述外网网站数据表,若:存在数据,便清除,否则,执行步骤(2.3),
步骤(2.3),所述数据获取模块依所设置的权限连接内网网站数据表,执行SQL中的“Select…from…”命令获得所述内网网站数据表中的所有数据,
步骤(2.4),所述数据获取模块把步骤(2.3)所获得的数据以“外网网站数据库更新命令+表数据”格式形成数据文件发送给所述数据发布模块,
步骤(2.5),所述数据发布模块依据收到的所述增量数据文件中的内容调用SQL命令实现外网网站数据表的更新;
步骤(3),依次按以下步骤实现外网网站数据库的数据更新,
步骤(3.1),网站管理人员通过所述网站后台管理***提交数据到内网网站数据表,用所述事件触发器将内网网站数据表变化数据发送至所述增量数据表,
步骤(3.2),所述数据变化监测模块查询到所述增量数据表中的数据记录发生变化后,通知所述数据获取模块访问所述增量数据表,获取增量数据:依次查询所述增量数据表中的所有数据记录,予以分别处理:
若:所述增量数据表为空,结束数据获取过程,
若:存在数据记录,则检查数据记录的获取数据操作标识字段,如状态为“已获取”,则表示该条数据记录已被所述数据获取模块获得,便直接删除该条数据记录,
若:状态为“未获取”,将标识更新为“获取中”,并将所述获取数据操作标识状态为“获取中”的数据记录依据数据文件存储格式转换为数据文件,以字段“更新时间+SQL命令+内网网站数据表变化数据”中的内容构建字符串作为输入参数,通过MD5算法计算数据唯一性标识,更新所述获取数据操作标识字段并设置其为“已获取”状态,删除操作标识为“已获取”的数据记录,
若:状态为“获取中”,表明该数据记录未完整获取,则继续获取,
步骤(3.3),在收到步骤(3.2)形成的所述数据文件后,所述数据更新模块把这些数据更新到所述待更新数据表中,并将发布数据操作标识字段标识为“未发布”,并通知所述数据发布模块有数据需要发布,
步骤(3.4),所述数据发布模块在收到步骤(3.3)中所述标识有“未发布”的数据记录时,便向所述外网网站数据表发布所述数据信息,
所述数据发布模块依次查询所述待更新数据表中的所有数据记录,予以分别处理:
若:所述待更新数据表为空,结束数据发布过程,
若:所述待更新数据表存在数据记录,则检查数据记录的发布数据操作标识字段,如状态为“已发布”,则表示该条数据记录已发布到所述外网网站数据表中,便直接删除该条数据记录,
若:状态为“未发布”,将标识更新为“发布中”,并将发布数据操作标识状态为“发布中”的数据记录以字段:更新时间,SQL命令,内网网站数据表变化数据中的内容构建SQL命令,提交到所述外网网站数据表中,删除操作标识为“已发布”的数据记录,
若:状态为“发布中”,表明该数据记录未完整发布,则继续发布,
步骤(3.5),数据防篡改模块在检测到待校验增量数据表中数据变化后,执行数据确认操作,验证数据发布的准确性,结束。
所述数据发布模块要依次查询所述待更新数据表中的所有数据记录:
若:发布数据操作标识状态为“已发布”,则直接删除该条数据记录,
若:发布数据操作标识状态为“未发布”,则置为“发布中”,
若:发布数据操作标识状态为“发布中”,则置为“已发布”状态,并直接删除该条数据记录。
所述数据防篡改模块定时查询***设置及所述待校验增量数据表中数据记录,并在检测到***设置及数据变化时启动相应操作。
对比现有技术,本发明有益效果在于,传统网站数据防篡改方法均针对网页静态信息的防护,而用户浏览网页所查看到的信息,基本都是以网页形式展示的后台数据库中的数据。对后台数据库的防护手段基本都是基于操作***本身的安全加固,这种***层的加固无法应对针对数据库的诸如SQL注入、提权、利用数据库***本身漏洞等攻击行为。考虑到对网站后台数据库的综合防护及自动恢复机制,本发明提出了一种基于隔离结构的网站数据防篡改方法,通过划分不同的安全级别网络,实现内、外网两个不同安全级别网络间数据的单向安全发布,同时通过数据防篡改机制监测数据库变化,及时发现低安全级别网络内数据库的非正常变化,从而确保网站数据的安全。
附图说明
图1为基于网络隔离结构的网站数据防篡改方法的应用框架
图2为内网网站数据表中的新数据添加至增量数据表的过程
图3为外网网站数据库中各个数据表之间的关系
图4为全表扫描方式进行数据库初始化流程
图5为数据防篡改模块对外网网站数据库保护的工作流程图
图6为数据获取模块获取数据的工作流程图
图7为数据发布进行数据发布的工作流程图
图8为数据防篡改模块数据防篡改工作流程图
具体实施方式
下面结合附图和实施例进一步描述本发明。
网站数据防篡改***物理构成可采用双主机或单主机架构:
●双主机架构中,网站数据防篡改***由两台分别连接内、外网网站数据库的独立主机及连接两主机的通信部件构成,通信部件可采用网卡或特殊的单向隔离部件;
●单主机架构中,通过***内部的模块划分,及模块之间的通信机制实现上述描述的框架结构。
一种应用本技术方案的应用框架如附图1所示,
其中包括网站数据防篡改***,内、外网网站数据库、部署在内网的网站后台管理***及部署在外网的Web服务器。外网网站数据库是网站Web服务器中动态内容的存储介质,内外网数据库均采用目前主流数据库,数据只能由内网网站数据库单向发布到外网网站数据库中。网站数据防篡改***连接内、外网网络,并且是内、外网网络的唯一连接***。
应用基于网络隔离结构的网站数据防篡改方法的网站数据防篡改***包括:与内网网站数据库相连的数据获取模块和数据变化监测模块,这两部分共同构成网站数据防篡改***的内网主机;与外网数据库相连的数据更新模块、数据发布模块和数据防篡改模块,这三部分共同构成网站数据防篡改***的外网主机;此外还包括内网主机和外网主机之间的连接通道。连接通道可为单向连接或双向连接,用于实现数据由网站防篡改***的内网部分到外网部分的单向流动。
网站后台管理***通过数据库的连接接口(JDBC或.Net的ODBC、ADO.Net等)实现对内网网站数据库的访问。网站管理人员从网站后台管理***提交数据后,数据将存储在内网网站数据库中,并经由网站数据防篡改***将数据单向发布到外网网站数据库中。
本实施例中,一种基于网络隔离结构的网站数据防篡改方法,包括如下步骤:
步骤一.***初始设置
***初始化设置包括三个方面:1)网站数据防篡改***的内网主机设置:用于设置网站数据防篡改***对内网网站数据库的访问权限及获取内网网站数据表变化数据的规则。从技术方面来说,目前获得内网网站数据表变化数据可通过多种方式实现,这里使用事件触发器。
事件触发器是数据库内建的一种机制,是特殊的存储过程,触发器的执行不是由程序调用实现,也不需要通过手工启动执行,而是由事件来触发,例如当对数据库中某个表进行操作时就会激活触发器。
在需要监测数据变化的内网网站数据表中建立事件触发器,当内网网站数据表中的数据发生变化时,事件触发器将变化的数据写入到一个临时表,即增量数据表中,数据变化监测模块定时查询增量数据表,如发现存在新的数据记录,则通知数据获取模块。数据获取模块通过数据库接口访问内网网站数据库,获得增量数据表中的数据记录,并及时删除已获得的数据记录。
图2反映了内网网站数据表中的变化数据添加至增量数据表的过程。
2)网站数据防篡改***的外网主机部分设置:设置数据更新模块对外网网站数据库待更新数据表的访问权限,设置数据发布模块对外网网站数据库中外网网站数据表的访问权限。在获得与内网网站数据库相连的数据获取模块的增量数据后,数据更新模块连接外网网站数据库,将增量数据更新到外网网站数据库中的待更新数据表中。数据发布模块负责将待更新数据表中的数据发布到外网网站数据表中。外网网站数据库的增量数据捕获机制为事件触发器,在数据发布模块更新外网网站数据表后,利用事件触发器捕获外网网站数据表中的数据变化,将变化数据置于外网网站数据库的待校验增量数据表中。
图3反映了***中外网网站数据库各个数据表之间的关系。
3)网站数据防篡改网站数据库初始化同步:数据获取模块对内网网站数据库做全表扫描来获得内网网站数据库在当前时间点的所有数据记录,并将获取到的数据记录发送给数据发布模块,通过该模块再更新到外网网站数据库中。完成此次数据发布后,将实现内、外网网站数据库中的数据一致,并保留当前时间点tstart_baseline作为内、外网网站数据库数据更新的基准。
使用全表扫描方式进行数据库初始化的流程为(如图4):
1.当启动内、外网网站数据库初始化同步时,数据获取模块连接数据发布模块,并发送“外网网站数据库初始化”命令给数据发布模块;
2.数据发布模块在收到“外网网站数据库初始化”命令后,将依据2)中外网网站数据表的访问权限设置连接外网网站数据库。如外网网站数据表中存在数据,数据发布模块首先清除表中所有数据,如其中没有数据,转入下一步骤;
3.数据获取模块依据1)中设置的内网网站数据库访问权限,连接内网网站数据库,并访问内网网站数据表;
4.数据获取模块执行“Select…from…”SQL命令获得内网网站数据表中所有数据记录;
5.将获得的内网网站数据表的数据记录以“外网网站数据库更新命令+表数据”格式存储成数据文件;
6.数据获取模块将获取的数据文件发送给数据发布模块;
7.数据发布模块依据数据文件中的命令描述调用相应的数据库SQL语句实现外网网站数据库的数据更新。
4)为确保防篡改***对数据库的安全保护,数据防篡改模块在设定对外网网站数据库的监控机制后,查询外网网站数据库中的所有用户,密码及其角色,并将“用户名+密码+角色”构成一字符串,作为MD5算法的参数计算用户信息特征值,并保存该特征值Mbase,当修改所述外网网站数据库用户权限设置时,将更新Mbase取值。
定时查询外网网站数据库中的所有用户,密码及其角色,并依据所述算法计算用户权限特征值Ncal,对比Ncal和Mbase,一致表示外网网站数据库为安全,不一致表示外网网站数据库中用户,密码或角色发生了变化,外网网站数据库可能被入侵,告警,并向外网网站数据库提出终止服务的请求,
具体流程如图5所示。
步骤二.网站数据更新
1)网站管理人员通过网站后台管理***提交数据到内网网站数据库;
2)数据变化监测模块发现数据变化后,通知数据获取模块检查内网网站数据库的增量数据表。数据获取模块获取内网网站数据库中的数据记录,然后将数据记录转换为文件,存储在网站数据防篡改***内网部分中。
根据步骤一中设定,数据由内网网站数据表到增量数据表通过内建的事件触发器完成。增量数据表包括如下字段:更新时间、获取时间、SQL命令、内网网站数据表变化数据、获取数据操作标识和数据唯一性标识:
●更新时间:网站后台管理***提交数据的时间;
●获取时间:网站数据防篡改***中内网主机的数据获取模块访问增量数据表,并保存所访问到的数据记录的时间;
●SQL命令:网站后台管理服务器提交数据时所执行的操作;
●内网网站数据表变化数据:事件触发器所捕获的内网网站数据表中变化的数据;
●获取数据操作标识:标识所述数据获取模块是否成功获得所要访问的数据记录,包括:“未获取”、“获取中”和“已获取”三种状态;
●数据唯一性标识:由所述数据获取模块采用MD5算法计算得出,MD5算法的输入参数由以下字段中的字符串构成:“所述更新时间+所述SQL命令+所述更新数据”,以标识所述增量数据的唯一性。
如图6所示,当内网网站数据库数据表中的数据记录通过事件触发器进入增量数据表中,其获取数据操作标识字段被设置为“未获取”状态,表示该数据还未被数据获取模块获得。在数据变化监测模块发现增量数据表中存在新数据记录后,将通知数据获取模块获取该记录。
数据获取模块依次查询增量数据表中的所有数据记录,如增量数据表为空表示已获得所有数据,结束数据获取过程,如存在数据记录,检查数据记录的获取数据操作标识字段,如状态为“已获取”表示该条数据记录已被数据获取模块获得,但可能由于某些意外原因未被删除,数据获取模块将直接删除该条记录。
如状态为“未获取”,将标识更新为“获取中”。将获取数据操作标识状态为“获取中”的数据记录依据数据文件存储格式转换为数据文件,用MD5算法计算基于字符串“更新时间+SQL命令+待更新数据”而得到的数据唯一性标识,更新增量数据表中该操作标识字段并设置其为“已获取”状态。删除操作标识为“已获取”的数据记录。
若:状态为“获取中”,表明该数据记录未完整获取,则继续获取。
数据获取模块需获取增量数据表如下字段的内容:更新时间、获取时间、SQL命令、内网网站数据表变化数据和数据唯一性标识字段,这些内容共同构成增量数据。
数据获取模块得到内网网站数据表中的增量数据后,将增量数据以XML的形式存储在网站数据防篡改***内网部分中,XML文件格式示例可为如下:
3)数据获取模块将增量数据文件通过内、外网通讯卡发送给数据更新模块;
4)数据更新模块连接外网网站数据库,依照增量数据文件依次更新待更新数据表。待更新数据表包括如下字段:更新时间、获取时间、SQL命令、内网网站数据表变化数据、发布数据操作标识和数据唯一性标识。
●更新时间:网站后台管理***提交数据的时间;
●获取时间:数据获取模块获得该条数据的时间;
●SQL命令:网站后台管理***提交数据的操作;
●内网网站数据表变化数据:事件触发器所捕获的内网网站数据表中变化的数据;
●发布数据操作标识:标识网站数据防篡改***中外网主机的数据发布模块是否成功发布该条数据记录,包括“未发布”、“发布中”和“已发布”三种状态;
●数据唯一性标识:由数据获取模块采用MD5算法计算得出。
数据更新模块只对外网网站数据库的待更新数据表有读写操作权限,而对外网网站数据库中的其它数据表没有操作权限。
数据更新模块收到由数据获取模块发送的数据记录后,将这些记录更新到待更新数据表,并将数据记录的发布数据操作标识字段更新为“未发布”状态。数据更新完成后,数据更新模块通知数据发布模块向外网网站数据库发布数据。
数据发布模块依次查询待更新数据表中的所有记录,如待更新数据表为空表示已发布所有数据,结束数据发布过程。
如存在数据记录,检查数据记录的发布数据操作标识字段,如状态为“已发布”表示该条数据记录已被数据发布模块发布到外网网站数据表中,但可能由于某些意外原因未被删除,数据发布模块将直接删除该条记录。
如状态为“未发布”,将发布数据操作标识更新为“发布中”。将状态为“发布中”的数据记录发布到外网网站数据表中,更新发布数据操作标识字段并设置其为“已发布”状态,并将数据记录的数据唯一性标识发送给数据防篡改模块。删除待更新数据表中操作标识为“已发布”的数据记录。
如发布数据操作标识为“发布中”的状态,继续发布数据。
整个更新及数据发布流程如图7所示。
5)依据步骤一中2)的设置,采用事件触发器,获得外网网站数据库中的变化数据,并将变化数据置于待校验增量数据表中。
待校验增量数据表应包括如下字段:更新时间、SQL命令、外网网数据表变化数据和原始数据唯一性标识。
●更新时间:所述网站后台管理***提交数据的时间;
●SQL命令:所述网站后台管理***提交数据的操作;
●外网网数据表变化数据:所述事件触发器所捕获的外网网站数据表中变化的数据;
●原始数据唯一性标识:由所述数据获取模块采用MD5算法计算得出。
数据发布模块在更新每条数据后,都会将该条数据的数据唯一性标识发送给数据防篡改模块,数据防篡改模块将数据唯一性标识保存在数据唯一性标识队列中。在确认数据唯一性标识对应的数据记录成功发布后,从队列中移除该标识。
根据步骤一中的设置,事件触发器将变化数据添加到待校验增量数据表。
数据防篡改模块在检测到待校验增量数据表中出现新数据记录后,首先确认该项数据记录是否由数据发布模块产生。如果待校验增量数据表中数据记录的原始数据唯一性标识没有包含在数据唯一性标识队列中,表示增量数据不是由数据发布模块产生,外网网站数据库可能出现异常,数据防篡改模块将告警,并通知数据发布模块删除外网网站数据表中的该项增量数据,并终止外网网站数据库服务。
否则,数据变化为正常变化,数据防篡改模块将基于待校验增量数据表中的“更新时间+SQL命令+外网网站数据表变化数据”字段构成的字符串,利用MD5算法计算该条数据的唯一性标识,与待校验增量数据表的原始数据唯一性标识进行对比,如果二者一致,则数据更新正常操作;如果原始唯一性标识与新计算得到的唯一性标识不一致,表示数据发布过程数据内容被修改,数据防篡改模块将告警,并通知数据发布模块删除外网网站数据表中的该项数据记录,并终止外网网站数据库服务。
图8描述了整个工作流程。
6)数据防篡改模块在数据防篡改机制方面遵从以下规则:
●所有来自内网网站数据库中的数据更新均是合法更新,也即授权数据更新;
●数据发布模块在未授权更新外网网站数据库数据的模式下,所有外网网站数据表的数据变化或数据库用户及用户权限变化均是非法;
●数据只能由内网网站数据库单向更新到外网网站数据库;
●未授权修改外网网站数据库用户设置情况下,任何数据防篡改模块所检测到的用户信息特征值与***保存特征值不一致均是非法。
待更新数据表、外网网站数据表、待校验增量数据表操作流程如图3所示。