CN112966232A - 页面水印防篡改方法、系统、电子设备和可读存储介质 - Google Patents
页面水印防篡改方法、系统、电子设备和可读存储介质 Download PDFInfo
- Publication number
- CN112966232A CN112966232A CN202110268191.XA CN202110268191A CN112966232A CN 112966232 A CN112966232 A CN 112966232A CN 202110268191 A CN202110268191 A CN 202110268191A CN 112966232 A CN112966232 A CN 112966232A
- Authority
- CN
- China
- Prior art keywords
- node
- watermark
- monitoring
- dom
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 238000012544 monitoring process Methods 0.000 claims abstract description 115
- 238000010586 diagram Methods 0.000 claims abstract description 40
- 238000005516 engineering process Methods 0.000 claims abstract description 19
- 230000006870 function Effects 0.000 claims description 37
- 238000006243 chemical reaction Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004806 packaging method and process Methods 0.000 claims description 12
- 238000003780 insertion Methods 0.000 claims description 6
- 230000037431 insertion Effects 0.000 claims description 6
- 230000008859 change Effects 0.000 description 16
- 230000001960 triggered effect Effects 0.000 description 10
- 230000007246 mechanism Effects 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000011161 development Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005538 encapsulation Methods 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/16—Program or content traceability, e.g. by watermarking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/0021—Image watermarking
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Editing Of Facsimile Originals (AREA)
- Image Processing (AREA)
Abstract
本申请涉及一种页面水印防篡改方法、系统、电子设备和计算机可读存储介质。其中,该页面水印防篡改方法包括:执行脚本引入步骤,创建全局入口文件并在所述全局入口文件中声明一DOM节点,并将预先定义封装的水印脚本文件引入所述全局入口文件;页面水印生成步骤,基于SVG技术和所述DOM节点进行背景水印矢量图的绘制、配置函数封装并插入所述全局入口文件;节点监测步骤,基于MutationObserver接口监测所述全局入口文件中背景水印所属的目标节点是否被篡改,从而实现节点监测;水印重新绘制步骤,当监测到所述目标节点被篡改时,重新绘制背景水印矢量图并重新触发节点监测。通过本申请,实现了有效防止恶意攻击者通过浏览器调试端篡改企业系统设置的专属水印。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及页面水印防篡改方法、系统、电子设备和计算机可读存储介质。
背景技术
随着计算机技术的飞速发展,信息网络已成为社会发展的重要保证,Web网站与应用越来越广泛,同时越来越多的个人与企业将服务器架在Web平台上。但是Web业务的飞速发展也引起了许多黑客的关注,许多Web系统存在一定的安全问题,也存在一定的安全漏洞,黑客会利用一些常见的Web安全漏洞对网站进行攻击,窃取用户信息,给用户造成利益损害,因此研究Web前端常见安全问题及对策对于互联网安全是十分重要的,也十分急切的。
目前许多Web管理系统都会设置专属水印功能来防止恶意截图或信息窃取,但安全系数很多都比较低,通过浏览器调试端很容易就能篡改或绕过。如,通过CSS背景图案拼接的方式,具体利用CSS background或background-image属性来整体生成背景水印,再调节一定的透明度,来完成全局专属水印的定制。通过CSS背景图案拼接方式虽然很容易完成专属水印的定制,但是在浏览器端是最容易被用同样的方式来进行图案的替换的,只需要在浏览器调试端通过对Style中对应的background属性进行替换即可仿造。再如,利用Canvas技术通过不同的HTML5画布属性来进行绘制,根据不同的需求,利用画布提供的不同函数来完成点、线、面、填充、文字等的制作来生成最终的水印。虽然,Canvas技术相对于CSS图案拼接的方式在实现上要更加复杂一些,但被直接篡改的难度明显提升,可仍然无法阻止通过浏览器调试端暴力删除整体Canvas Dom的形式来绕过水印。
发明内容
本申请实施例提供了一种页面水印防篡改方法、装置、系统、电子设备和计算机可读存储介质,以至少解决相关技术中恶意攻击者通过浏览器调试端篡改水印窃取系统信息的问题。
第一方面,本申请实施例提供了一种页面水印防篡改方法,包括:
执行脚本引入步骤,创建全局入口文件并在所述全局入口文件index.html中声明一DOM节点,以作为根节点元素进行水印的挂载绘制,并将预先定义封装的水印脚本文件watermark.js引入所述全局入口文件index.html;
页面水印生成步骤,基于SVG技术(英文全称为Scalable Vector Graphics,意为可缩放的矢量图形)和所述DOM节点进行背景水印矢量图的绘制、配置函数封装并插入所述全局入口文件;
节点监测步骤,基于MutationObserver接口监测所述全局入口文件中背景水印所属的目标节点是否被篡改,从而实现节点监测,其中,Mutation Observer接口用来监视DOM的变动。DOM的任何变动,比如节点的增减、属性的变动、文本内容的变动,该接口都可以得到通知;
水印重新绘制步骤,当监测到所述目标节点被篡改时,重新绘制背景水印矢量图并重新触发节点监测。
基于上述步骤,本申请通过HTML5的SVG绘制水印和配置函数封装,以及对所述目标节点的DOM树的直接监测和重置,有效防止恶意攻击者通过浏览器调试端篡改企业系统设置的专属水印,以达到保护企业系统信息安全的目的。
在其中一些实施例中,所述页面水印生成步骤进一步包括:
背景水印绘制步骤,利用SVG技术进行背景水印矢量图的绘制,并进行配置函数封装,得到svg标签及用于绘制所述背景水印的水印函数;具体的,所述配置函数的配置参数至少包括:文字内容,文字大小,文字颜色,整体宽度,整体高度,角度旋转,透明度,层级等;
背景水印插入步骤,根据所述DOM节点生成一DOM容器,将所述svg标签经编码转换后结合CSS的样式属性作为整体样式插入至所述DOM容器,以生成所述背景水印矢量图。可选的,所述编码转换可以为Base64转换,所述Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
基于上述步骤,对外暴露简洁的水印配置方法,保证水印组件入口的唯一性,降低了安全水印使用的技术难度,使用户可以基于上述简单的配置参数生产不同需求的定制的专属水印。
在其中一些实施例中,所述节点监测步骤进一步包括:
DOM子节点监测步骤,通过直接监测所述目标节点的DOM子节点判断所述DOM子节点是否新增或删除,并获取被增加或被删除的节点;
属性节点监测步骤,通过监测所述目标节点的DOM子节点的属性值判断对应的属性节点是否发生变化,并获取发生变化的属性节点所在的元素节点;
文本节点监测步骤,通过监测所述目标节点对应的数据内容判断所述目标节点的节点内容或节点文本是否发生变化,并获取变化后的节点内容或节点文本。
在其中一些实施例中,所述节点监测步骤进一步包括:
节点后代子集合监测步骤,用于监测所述目标节点的所有后代子集合,以同时监测所述目标节点的DOM子节点、属性节点及文本节点的变化,并判断所述目标节点是否被篡改。
基于上述步骤,可同时监测DOM子节点、属性节点及文本节点的变化,一旦发现其中任一种节点被篡改,则会判断所述目标节点发生了变化,则重新绘制背景水印矢量图并重新触发节点监测。
第二方面,本申请实施例提供了一种页面水印防篡改系统,包括:
执行脚本引入模块,创建全局入口文件并在所述全局入口文件index.html中声明一DOM节点,以作为根节点元素进行水印的挂载绘制,并将预先定义封装的水印脚本文件watermark.js引入所述全局入口文件index.html;
页面水印生成模块,基于SVG技术和所述DOM节点进行背景水印矢量图的绘制、配置函数封装并插入所述全局入口文件;
节点监测模块,基于MutationObserver接口监测所述全局入口文件中背景水印所属的目标节点是否被篡改,从而实现节点监测;
水印重新绘制模块,当监测到所述目标节点被篡改时,重新绘制背景水印矢量图并重新触发节点监测。
基于上述模块,本申请通过HTML5的SVG绘制水印和配置函数封装,以及对所述目标节点的DOM树的直接监测和重置,有效防止恶意攻击者通过浏览器调试端篡改企业系统设置的专属水印,以达到保护企业系统信息安全的目的。
在其中一些实施例中,所述页面水印生成模块进一步包括:
背景水印绘制模块,利用SVG技术进行背景水印矢量图的绘制,并进行配置函数封装,得到svg标签及用于绘制所述背景水印的水印函数;具体的,所述配置函数的配置参数至少包括:文字内容,文字大小,文字颜色,整体宽度,整体高度,角度旋转,透明度,层级等
背景水印插入模块,根据所述DOM节点生成一DOM容器,将所述svg标签经编码转换后结合CSS的样式属性作为整体样式插入至所述DOM容器,以生成所述背景水印矢量图。可选的,所述编码转换可以为Base64转换,所述Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
基于上述模块,对外暴露简洁的水印配置方法,保证水印组件入口的唯一性,降低了安全水印使用的技术难度,使用户可以基于上述简单的配置参数生产不同需求的定制的专属水印。
在其中一些实施例中,所述节点监测模块进一步包括:
DOM子节点监测模块,通过直接监测所述目标节点的DOM子节点判断所述DOM子节点是否新增或删除,并获取被增加或被删除的节点;
属性节点监测模块,通过监测所述目标节点的DOM子节点的属性值判断对应的属性节点是否发生变化,并获取发生变化的属性节点所在的元素节点;
文本节点监测模块,通过监测所述目标节点对应的数据内容判断所述目标节点的节点内容或节点文本是否发生变化,并获取变化后的节点内容或节点文本。
在其中一些实施例中,所述节点监测模块进一步包括:
节点后代子集合监测模块,用于监测所述目标节点的所有后代子集合,以同时监测所述目标节点的DOM子节点、属性节点及文本节点的变化,并判断所述目标节点是否被篡改。
基于上述模块,可同时监测DOM子节点、属性节点及文本节点的变化,一旦发现其中任一种节点被篡改,则会判断所述目标节点发生了变化,则重新绘制背景水印矢量图并重新触发节点监测。
第三方面,本申请实施例提供了一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述第一方面所述的页面水印防篡改方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述第一方面所述的页面水印防篡改方法。
相比于相关技术,本申请实施例提供的页面水印防篡改方法、系统、电子设备及计算机可读存储介质,实现了有效防止恶意攻击者通过浏览器调试端篡改企业系统设置的专属水印并提供了一种对外的简单配置以使用户可以快速使用安全水印技术。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的页面水印防篡改方法的流程示意图;
图2是根据本申请实施例的页面水印防篡改方法的另一流程示意图;
图3是根据本申请实施例的页面水印防篡改系统的结构框图;
图4是根据本申请优选实施例的页面水印防篡改方法的流程示意图。
附图说明:
1、执行脚本引入模块;2、页面水印生成模块;3、节点监测模块;
4、水印重新绘制模块;
201、背景水印绘制模块;202、背景水印插入模块;
301、DOM子节点监测模块;302、属性节点监测模块;
303、文本节点监测模块;304、节点后代子集合监测模块。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
显而易见地,下面描述中的附图仅仅是本申请的一些示例或实施例,对于本领域的普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图将本申请应用于其他类似情景。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
本发明旨在通过对Web系统的水印机制进行深入研究分析,提出一种防止通过浏览器调试端篡改水印的安全方法,从而提升Web系统专属水印的安全等级,更好的保护用户的信息安全。
图1是根据本申请实施例的页面水印防篡改方法的流程示意图,参考图1所示,该流程包括如下步骤:
执行脚本引入步骤S1,创建全局入口文件并在全局入口文件index.html中声明一DOM节点,以作为根节点元素进行水印的挂载绘制,并将预先定义封装的水印脚本文件watermark.js引入全局入口文件index.html;
页面水印生成步骤S2,基于SVG技术和DOM节点进行背景水印矢量图的绘制、配置函数封装并插入全局入口文件;
节点监测步骤S3,基于MutationObserver接口监测全局入口文件中背景水印所属的目标节点是否被篡改,从而实现节点监测,具体的,定义一变量接收Window全局的MutationObserver,然后在新建的MutationObserver函数中开启对于目标节点中DOM节点、属性节点、文本节点和/或子树集合进行监测;
水印重新绘制步骤S4,当监测到目标节点被篡改时,重新绘制背景水印矢量图并重新触发节点监测,具体的,通过调用水印函数重新绘制渲染svg标签,通过重新进入所述步骤S3重新触发节点监测。
基于上述步骤,本申请通过HTML5的SVG绘制水印和配置函数封装,以及对目标节点的DOM树的直接监测和重置,有效防止恶意攻击者通过浏览器调试端篡改企业系统设置的专属水印,以达到保护企业系统信息安全的目的。
在其中一些实施例中,页面水印生成步骤S2进一步包括:
背景水印绘制步骤S201,利用SVG技术进行背景水印矢量图的绘制,并进行配置函数封装,得到svg标签及用于绘制背景水印的水印函数;具体的,配置函数的配置参数至少包括:文字内容,文字大小,文字颜色,整体宽度,整体高度,角度旋转,透明度,层级等,首先引入svg标签,配置待显示的区域宽度和高度,然后在svg标签内引入text标签,设置text标签内的边框、填充色、透明度、字体内容、字体大小、字体颜色、偏移等属性,根据不同属性进行调节,来生成期望的背景水印的展示效果;
背景水印插入步骤S202,根据DOM节点生成一DOM容器,将svg标签经编码转换后结合CSS的样式属性作为整体样式插入至DOM容器,以生成背景水印矢量图。可选的,编码转换可以为Base64转换,Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法;具体的,将svg标签进行Base64转换,生成可用的Base64Url结合进CSS的style属性中,以整体styleStr的方式融合至DOM容器。
基于上述步骤,对外暴露简洁的水印配置方法,保证水印组件入口的唯一性,降低了安全水印使用的技术难度,使用户可以基于上述简单的配置参数生产不同需求的定制的专属水印。
在其中一些实施例中,节点监测步骤S3进一步包括:
DOM子节点监测步骤S301,通过直接监测目标节点的DOM子节点判断DOM子节点是否新增或删除,并获取被增加或被删除的节点;具体的,对目标节点的DOM子节点进行直接监测,遍历要监听的子节点childList,观察是否新增了目标节点的某个DOM子节点,或者删除了目标节点的某个DOM子节点,如果目标节点的某个DOM子节点发生了变化,则返回新的childList,通过addedNodes返回被添加的节点,通过removedNodes返回被删除的节点。
属性节点监测步骤S302,通过监测目标节点的DOM子节点的属性值判断对应的属性节点是否发生变化,并获取发生变化的属性节点所在的元素节点;具体的,通过观察目标节点的子节点的attributes属性来判断该子节点的属性值是否发生了变化,如果监测到伪造者通过某种方式篡改了该子节点中的class或style等属性,则返回发生变化的属性节点所在的元素节点,attributeName可返回变更属性的名称;
文本节点监测步骤S303,通过监测目标节点对应的数据内容判断目标节点的节点内容或节点文本是否发生变化,并获取变化后的节点内容或节点文本。
本实施例还提供了一种页面水印防篡改方法,图2是根据本申请实施例的页面水印防篡改方法的另一流程示意图,参考图2所示,该流程与上述实施例不同之处在于,节点监测步骤S3进一步包括:
节点后代子集合监测步骤S304,用于监测目标节点的所有后代子集合,以同时监测目标节点的DOM子节点、属性节点及文本节点的变化,并判断目标节点是否被篡改。
基于上述步骤,可同时监测DOM子节点、属性节点及文本节点的变化,一旦发现其中任一种节点被篡改,则会判断目标节点发生了变化,则重新绘制背景水印矢量图并重新触发节点监测。本申请提出一种多维度的监测机制,可基于上述实施例进行节点的单独监测,也可基于实施例进行同时监测,从而保证背景水印效果展示的实时性及安全性。
下面通过优选实施例对本申请实施例进行描述和说明。
图4是根据本申请优选实施例的页面水印防篡改方法的流程示意图,参考图4所示,该页面水印防篡改方法包括如下步骤:
步骤S51,通过创建全局入口文件,声明DOM节点进行水印的挂载绘制,以实现全局基础容器挂载。具体的,采用在全局入口文件index.html中声明出一个根结点元素进行水印的挂载绘制。
步骤S52,执行脚本引入,将预先定义封装好的水印脚本文件watermark.js引入全局入口文件index.html中。
步骤S53,利用SVG技术进行背景水印矢量图的绘制,并进行配置函数的封装。具体的,首先引入svg标签,配置需要展示的区域宽度和高度,然后在svg标签内引入text标签,设置text标签内的边框,填充色,透明度,字体内容,字体大小,字体颜色,偏移等属性,根据不同属性的调节,来生成用户定制的展示效果。
步骤S54,进行具体容器位置的svg水印脚本插入,找到之前全局入口文件中提前预埋好的DOM节点,选取预埋好的DOM节点来手动生成一个DOM容器,将预制好的svg水印脚本先进行Base64的转换,将生成的可用的Base64Url结合进CSS的style属性中,最后以整体styleStr的方式融合进DOM容器之中,来生产我们最终的水印效果。
步骤S55,开启DOM节点数的实时全监测,进行页面节点的最直接监测。具体的,先定义一个变量来接收window全局的MutationObserver,然后在new MutationObserver函数中开启对于目标容器中的DOM子节点,属性节点,文本节点,子树集合等的整体监测。
具体的,首先,经步骤S551对目标节点的DOM子节点进行直接监测,遍历要监听的子节点childList,观察是否新增了目标节点的某个DOM子节点,或者删除了目标节点的某个DOM子节点,如果目标节点的某个DOM子节点发生了变化,则返回新的childList,通过addedNodes返回被添加的节点,通过removedNodes返回被删除的节点。当发现DOM子节点被直接暴力添加或删除,进入步骤S56重新启动水印绘制,重新触发节点监测。具体的,重新设置目标容器的相对定位,然后重新初始化目标容器的子节点,同时重新触发步骤S55实现的监测机制。
步骤S552,监测目标节点的子节点的属性节点变化。具体的,通过对观察目标节点的子节点的attributes属性,来判断某个子节点的属性值是否发生了变化,如果监测到伪造者通过某种方式篡改了子节点中的class或style等属性,则返回发生变化的属性节点所在的元素节点,attributeName可返回变更属性的名称,当发现属性节点发生了变化,进入步骤S56重新启动水印绘制,重新触发节点监测。具体的,先断开监测机制,避免一直重复触发,之后重新调用封装好的水印函数来重新绘制渲染背景水印,同时重新触发步骤S55实现的监测机制。
步骤S553,监测目标节点的文本节点变化,当目标节点为characterData节点时,这时要观察目标节点的文本内容是否发生了变化,即对目标节点的数据内容进行监测,如果发现展示的数据文本内容被修改时则会返回新的characterData,当发现文本节点发生了变化,进入步骤S56重新启动水印绘制,重新触发节点监测。具体的,直接通过水印函数来重新绘制渲染svg水印,同时重新触发步骤S55实现的监测机制。
除了上述三种DOM子节点,属性节点,文本节点的可单独监测的方式外,还可整体检测目标节点的所有后代子集合subtree,即同时观察上述的三种节点变化。一但发现任意一种监测节点被篡改,即会判断与之前相比是否发生了变化,一但变化则会进入步骤S56重新启动水印绘制,重新触发节点监测,以实现通过完整的多维度的监测机制,从而保证了水印效果的实时性与安全性。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种页面水印防篡改系统,该系统用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的系统较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图3是根据本申请实施例的页面水印防篡改系统的结构框图,如图3所示,该系统包括:
执行脚本引入模块1,创建全局入口文件并在全局入口文件index.html中声明一DOM节点,以作为根节点元素进行水印的挂载绘制,并将预先定义封装的水印脚本文件watermark.js引入全局入口文件index.html;
页面水印生成模块2,基于SVG技术和DOM节点进行背景水印矢量图的绘制、配置函数封装并插入全局入口文件;
节点监测模块3,基于MutationObserver接口监测全局入口文件中背景水印所属的目标节点是否被篡改,从而实现节点监测,具体的,定义一变量接收Window全局的MutationObserver,然后在新建的MutationObserver函数中开启对于目标节点中DOM节点、属性节点、文本节点和/或子树集合进行监测;
水印重新绘制模块4,当监测到目标节点被篡改时,重新绘制背景水印矢量图并重新触发节点监测,具体的,通过调用水印函数重新绘制渲染svg标签。
基于上述模块,本申请通过HTML5的SVG绘制水印和配置函数封装,以及对目标节点的DOM树的直接监测和重置,有效防止恶意攻击者通过浏览器调试端篡改企业系统设置的专属水印,以达到保护企业系统信息安全的目的。
其中,页面水印生成模块2进一步包括:背景水印绘制模块201,利用SVG技术进行背景水印矢量图的绘制,并进行配置函数封装,得到svg标签及用于绘制背景水印的水印函数;具体的,配置函数的配置参数至少包括:文字内容,文字大小,文字颜色,整体宽度,整体高度,角度旋转,透明度,层级等,首先引入svg标签,配置待显示的区域宽度和高度,然后在svg标签内引入text标签,设置text标签内的边框、填充色、透明度、字体内容、字体大小、字体颜色、偏移等属性,根据不同属性进行调节,来生成期望的背景水印的展示效果;背景水印插入模块202,根据DOM节点生成一DOM容器,将svg标签经编码转换后结合CSS的样式属性作为整体样式插入至DOM容器,以生成背景水印矢量图。可选的,编码转换可以为Base64转换,Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法;具体的,将svg标签进行Base64转换,生成可用的Base64Url结合进CSS的style属性中,以整体styleStr的方式融合至DOM容器。
基于上述模块,对外暴露简洁的水印配置方法,保证水印组件入口的唯一性,降低了安全水印使用的技术难度,使用户可以基于上述简单的配置参数生产不同需求的定制的专属水印。
其中,节点监测模块3进一步包括:DOM子节点监测模块301,通过直接监测目标节点的DOM子节点判断DOM子节点是否新增或删除,并获取被增加或被删除的节点;具体的,对目标节点的DOM子节点进行直接监测,遍历要监听的子节点childList,观察是否新增了目标节点的某个DOM子节点,或者删除了目标节点的某个DOM子节点,如果目标节点的某个DOM子节点发生了变化,则返回新的childList,通过addedNodes返回被添加的节点,通过removedNodes返回被删除的节点。属性节点监测模块302,通过监测目标节点的DOM子节点的属性值判断对应的属性节点是否发生变化,并获取发生变化的属性节点所在的元素节点;具体的,通过观察目标节点的子节点的attributes属性来判断该子节点的属性值是否发生了变化,如果监测到伪造者通过某种方式篡改了该子节点中的class或style等属性,则返回发生变化的属性节点所在的元素节点,attributeName可返回变更属性的名称;文本节点监测模块303,通过监测目标节点对应的数据内容判断目标节点的节点内容或节点文本是否发生变化,并获取变化后的节点内容或节点文本;和/或节点后代子集合监测模块304,用于监测目标节点的所有后代子集合,以同时监测目标节点的DOM子节点、属性节点及文本节点的变化,并判断目标节点是否被篡改。
基于上述模块,可同时监测DOM子节点、属性节点及文本节点的变化,一旦发现其中任一种节点被篡改,则会判断目标节点发生了变化,则重新绘制背景水印矢量图并重新触发节点监测,本申请提出一种多维度的监测机制,可基于上述实施例进行节点的单独监测,也可基于实施例进行同时监测,从而保证背景水印效果展示的实时性及安全性。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
另外,结合图1和/或图2描述的本申请实施例页面水印防篡改方法可以由电子设备来实现。电子设备可以包括处理器以及存储有计算机程序指令的存储器。
具体地,上述处理器可以包括中央处理器(CPU),或者特定集成电路(ApplicationSpecific Integrated Circuit,简称为ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
其中,存储器可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器可包括硬盘驱动器(Hard Disk Drive,简称为HDD)、软盘驱动器、固态驱动器(SolidState Drive,简称为SSD)、闪存、光盘、磁光盘、磁带或通用串行总线(Universal SerialBus,简称为USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器可在数据处理装置的内部或外部。在特定实施例中,存储器是非易失性(Non-Volatile)存储器。在特定实施例中,存储器包括只读存储器(Read-Only Memory,简称为ROM)和随机存取存储器(Random AccessMemory,简称为RAM)。在合适的情况下,该ROM可以是掩模编程的ROM、可编程ROM(ProgrammableRead-Only Memory,简称为PROM)、可擦除PROM(Erasable ProgrammableRead-Only Memory,简称为EPROM)、电可擦除PROM(Electrically Erasable ProgrammableRead-Only Memory,简称为EEPROM)、电可改写ROM(Electrically Alterable Read-OnlyMemory,简称为EAROM)或闪存(FLASH)或者两个或更多个以上这些的组合。在合适的情况下,该RAM可以是静态随机存取存储器(Static Random-Access Memory,简称为SRAM)或动态随机存取存储器(Dynamic Random Access Memory,简称为DRAM),其中,DRAM可以是快速页模式动态随机存取存储器(Fast Page Mode Dynamic Random Access Memory,简称为FPMDRAM)、扩展数据输出动态随机存取存储器(Extended Date Out Dynamic RandomAccess Memory,简称为EDODRAM)、同步动态随机存取内存(Synchronous Dynamic Random-Access Memory,简称SDRAM)等。
存储器可以用来存储或者缓存需要处理和/或通信使用的各种数据文件,以及处理器所执行的可能的计算机程序指令。
处理器通过读取并执行存储器中存储的计算机程序指令,以实现上述实施例中的任意一种页面水印防篡改方法。
另外,结合上述实施例中的页面水印防篡改方法,本申请实施例可提供一种计算机可读存储介质来实现。该计算机可读存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种页面水印防篡改方法。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种页面水印防篡改方法,其特征在于,包括:
执行脚本引入步骤,创建全局入口文件并在所述全局入口文件中声明一DOM节点,并将预先定义封装的水印脚本文件引入所述全局入口文件;
页面水印生成步骤,基于SVG技术和所述DOM节点进行背景水印矢量图的绘制、配置函数封装并插入所述全局入口文件;
节点监测步骤,基于MutationObserver接口监测所述全局入口文件中背景水印所属的目标节点是否被篡改,从而实现节点监测;
水印重新绘制步骤,当监测到所述目标节点被篡改时,重新绘制背景水印矢量图并重新触发节点监测。
2.根据权利要求1所述的页面水印防篡改方法,其特征在于,所述页面水印生成步骤进一步包括:
背景水印绘制步骤,利用SVG技术进行背景水印矢量图的绘制,并进行配置函数封装,得到svg标签及用于绘制所述背景水印的水印函数;
背景水印插入步骤,根据所述DOM节点生成一DOM容器,将所述svg标签经编码转换后结合CSS的样式属性作为整体样式插入至所述DOM容器,以生成所述背景水印矢量图。
3.根据权利要求1所述的页面水印防篡改方法,其特征在于,所述节点监测步骤进一步包括:
DOM子节点监测步骤,通过直接监测所述目标节点的DOM子节点判断所述DOM子节点是否新增或删除,并获取被增加或被删除的节点;
属性节点监测步骤,通过监测所述目标节点的DOM子节点的属性值判断对应的属性节点是否发生变化,并获取发生变化的属性节点所在的元素节点;
文本节点监测步骤,通过监测所述目标节点对应的数据内容判断所述目标节点的节点内容或节点文本是否发生变化,并获取变化后的节点内容或节点文本。
4.根据权利要求1至3中任一项所述的页面水印防篡改方法,其特征在于,所述节点监测步骤进一步包括:
节点后代子集合监测步骤,用于监测所述目标节点的所有后代子集合,并判断所述目标节点是否被篡改。
5.一种页面水印防篡改系统,其特征在于,包括:
执行脚本引入模块,创建全局入口文件并在所述全局入口文件中声明一DOM节点,并将预先定义封装的水印脚本文件引入所述全局入口文件;
页面水印生成模块,基于SVG技术和所述DOM节点进行背景水印矢量图的绘制、配置函数封装并插入所述全局入口文件;
节点监测模块,基于MutationObserver接口监测所述全局入口文件中背景水印所属的目标节点是否被篡改,从而实现节点监测;
水印重新绘制模块,当监测到所述目标节点被篡改时,重新绘制背景水印矢量图并重新触发节点监测。
6.根据权利要求5所述的页面水印防篡改系统,其特征在于,所述页面水印生成模块进一步包括:
背景水印绘制模块,利用SVG技术进行背景水印矢量图的绘制,并进行配置函数封装,得到svg标签及用于绘制所述背景水印的水印函数;
背景水印插入模块,根据所述DOM节点生成一DOM容器,将所述svg标签经编码转换后结合CSS的样式属性作为整体样式插入至所述DOM容器,以生成所述背景水印矢量图。
7.根据权利要求5所述的页面水印防篡改系统,其特征在于,所述节点监测模块进一步包括:
DOM子节点监测模块,通过直接监测所述目标节点的DOM子节点判断所述DOM子节点是否新增或删除,并获取被增加或被删除的节点;
属性节点监测模块,通过监测所述目标节点的DOM子节点的属性值判断对应的属性节点是否发生变化,并获取发生变化的属性节点所在的元素节点;
文本节点监测模块,通过监测所述目标节点对应的数据内容判断所述目标节点的节点内容或节点文本是否发生变化,并获取变化后的节点内容或节点文本。
8.根据权利要求5至7中任一项所述的页面水印防篡改系统,其特征在于,所述节点监测模块进一步包括:
节点后代子集合监测模块,用于监测所述目标节点的所有后代子集合,并判断所述目标节点是否被篡改。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的页面水印防篡改方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至4中任一项所述的页面水印防篡改方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110268191.XA CN112966232B (zh) | 2021-03-12 | 2021-03-12 | 页面水印防篡改方法、系统、电子设备和可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110268191.XA CN112966232B (zh) | 2021-03-12 | 2021-03-12 | 页面水印防篡改方法、系统、电子设备和可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112966232A true CN112966232A (zh) | 2021-06-15 |
CN112966232B CN112966232B (zh) | 2024-03-29 |
Family
ID=76277285
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110268191.XA Active CN112966232B (zh) | 2021-03-12 | 2021-03-12 | 页面水印防篡改方法、系统、电子设备和可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112966232B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343312A (zh) * | 2021-06-25 | 2021-09-03 | 工银科技有限公司 | 基于前端埋点技术的页面防篡改方法及系统 |
CN114419197A (zh) * | 2021-12-15 | 2022-04-29 | 北京力控元通科技有限公司 | 一种基于svg的功能定义系统、方法及计算机设备 |
CN115099200A (zh) * | 2022-08-29 | 2022-09-23 | 南京中孚信息技术有限公司 | 防篡改的文本处理方法、装置和计算机设备 |
CN116383782A (zh) * | 2022-12-02 | 2023-07-04 | 中山市可讯科技有限公司 | 一种网页水印生成、防篡改的方法 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206589A1 (en) * | 2001-04-10 | 2006-09-14 | Lentini Russell P | Method and systems for providing access to dynamic content via static pages |
CN104778423A (zh) * | 2015-04-28 | 2015-07-15 | 福建六壬网安股份有限公司 | 基于文件驱动的水印对比的网页防篡改方法 |
CN109359260A (zh) * | 2018-09-29 | 2019-02-19 | 腾讯科技(成都)有限公司 | 网络页面更改监测方法、装置、设备以及介质 |
CN110489943A (zh) * | 2019-07-15 | 2019-11-22 | 贝壳技术有限公司 | 页面水印防篡改方法和系统 |
CN110909320A (zh) * | 2019-10-18 | 2020-03-24 | 北京字节跳动网络技术有限公司 | 一种网页水印防篡改的方法、装置、介质和电子设备 |
CN111711597A (zh) * | 2020-04-16 | 2020-09-25 | 武汉大学 | 一种基于时隙流水印的Tor暗网用户溯源方法及系统 |
CN112100551A (zh) * | 2019-06-18 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 一种水印处理方法、装置、存储介质及计算机程序产品 |
CN112100583A (zh) * | 2020-09-23 | 2020-12-18 | 上海英方软件股份有限公司 | 一种Web可视水印的生成方法及装置 |
-
2021
- 2021-03-12 CN CN202110268191.XA patent/CN112966232B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060206589A1 (en) * | 2001-04-10 | 2006-09-14 | Lentini Russell P | Method and systems for providing access to dynamic content via static pages |
CN104778423A (zh) * | 2015-04-28 | 2015-07-15 | 福建六壬网安股份有限公司 | 基于文件驱动的水印对比的网页防篡改方法 |
CN109359260A (zh) * | 2018-09-29 | 2019-02-19 | 腾讯科技(成都)有限公司 | 网络页面更改监测方法、装置、设备以及介质 |
CN112100551A (zh) * | 2019-06-18 | 2020-12-18 | 腾讯科技(深圳)有限公司 | 一种水印处理方法、装置、存储介质及计算机程序产品 |
CN110489943A (zh) * | 2019-07-15 | 2019-11-22 | 贝壳技术有限公司 | 页面水印防篡改方法和系统 |
CN110909320A (zh) * | 2019-10-18 | 2020-03-24 | 北京字节跳动网络技术有限公司 | 一种网页水印防篡改的方法、装置、介质和电子设备 |
CN111711597A (zh) * | 2020-04-16 | 2020-09-25 | 武汉大学 | 一种基于时隙流水印的Tor暗网用户溯源方法及系统 |
CN112100583A (zh) * | 2020-09-23 | 2020-12-18 | 上海英方软件股份有限公司 | 一种Web可视水印的生成方法及装置 |
Non-Patent Citations (3)
Title |
---|
ZHU HUAIHONG等: "A dual pseudo random sequence digital watermarking algorithm based on DCT", 《2011 INTERNATIONAL CONFERENCE ON E-BUSINESS AND E-GOVERNMENT (ICEE)》, pages 1 - 4 * |
郭川等: "一种网页挂马攻击中的重定向混淆检测方法", 《网络新媒体技术》, vol. 3, no. 3, pages 21 - 27 * |
高明明: "二维矢量图形数字水印的研究", 中国优秀硕士学位论文全文数据库, no. 01, pages 138 - 18 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113343312A (zh) * | 2021-06-25 | 2021-09-03 | 工银科技有限公司 | 基于前端埋点技术的页面防篡改方法及系统 |
CN114419197A (zh) * | 2021-12-15 | 2022-04-29 | 北京力控元通科技有限公司 | 一种基于svg的功能定义系统、方法及计算机设备 |
CN114419197B (zh) * | 2021-12-15 | 2023-03-24 | 北京力控元通科技有限公司 | 一种基于svg的功能定义系统、方法及计算机设备 |
CN115099200A (zh) * | 2022-08-29 | 2022-09-23 | 南京中孚信息技术有限公司 | 防篡改的文本处理方法、装置和计算机设备 |
CN115099200B (zh) * | 2022-08-29 | 2022-11-01 | 南京中孚信息技术有限公司 | 防篡改的文本处理方法、装置和计算机设备 |
CN116383782A (zh) * | 2022-12-02 | 2023-07-04 | 中山市可讯科技有限公司 | 一种网页水印生成、防篡改的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112966232B (zh) | 2024-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112966232A (zh) | 页面水印防篡改方法、系统、电子设备和可读存储介质 | |
CN104461491B (zh) | 一种Hybrid组件的运行方法和系统 | |
US7639818B2 (en) | Structured document signature device, structured document adaptation device and structured document verification device | |
US10678910B2 (en) | Modifying web page code to include code to protect output | |
CN103026684B (zh) | 用于防御跨站脚本攻击的方法和装置 | |
US9740869B1 (en) | Enforcement of document element immutability | |
EP2633438A1 (en) | Method for displaying a data set | |
CN110489943B (zh) | 页面水印防篡改方法和系统 | |
BR112012029768B1 (pt) | Método e dispositivo para exibição de mensagens instantâneas | |
CN112559928B (zh) | 基于混合开发的页面处理方法、装置、电子设备及存储介质 | |
CN109376133A (zh) | 文件访问方法及文件访问系统 | |
CN103778352B (zh) | 电子证据生成、验证方法及其装置与系统 | |
EP3961452A1 (en) | Detecting injection vulnerabilities of client-side templating systems | |
CN110084038A (zh) | 防止第三方JavaScript漏洞 | |
CN116127420A (zh) | 水印的添加方法和装置、存储介质、电子装置 | |
CN113114646B (zh) | 一种风险参数确定方法、装置、电子设备及存储介质 | |
Mueller et al. | Dangers and prevalence of unprotected web fonts | |
CN116263831A (zh) | 一种网页数据篡改检测方法、装置、计算设备和存储介质 | |
CN108650257B (zh) | 基于网站内容的安全检测设置方法、装置及存储介质 | |
CN115269066B (zh) | 接口调用方法、设备及存储介质 | |
CN115834254B (zh) | 网络内容安全防护方法、装置、存储介质及电子设备 | |
CN115099200B (zh) | 防篡改的文本处理方法、装置和计算机设备 | |
KR101171212B1 (ko) | 웹 인젝션 공격 탐지 방법 | |
CN115065534B (zh) | 动态脚本攻击拦截方法、装置、电子设备及可读存储介质 | |
CN113918862A (zh) | 一种web应用防护方法、系统及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |