短网址网页源码项目相关的关键技术

2016年11月08日来源:980短网址原创分类:短网址阅读(74评论(0

  短网址网页项目相关的关键技术:网页源码解析技术、HASH算法、KMP字符串匹配算法、正则表达式,并对其中一些技术在项目中的使用方法、具体实现和使用位置进行了说明。

  短网址网页的DOM结构

  文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的可处理与系统平台和编程语言无关的可扩展标记语言的标准编程接口。在标准的DOM文档中,文档在解析后被转化为DOM树,树的每个节点是一个对象。DOM模型描述了文搜的结构,同时还定义了节点对象的行为,通过将对象的方法和属性与木马特征值进行匹配,将很大一定程度上提高木马特征值的匹配效率。网页DOM树结构。

短网址网页DOM结构

  短网址网页DOM结构

  短网址网页源码解析

  在短网址系统中,当短网址网页爬虫将短网址网页源数据爬取到本地后,系统会开始对短网址网页源码进行解析。

  首先使用jgroup解析器将html文件转化为xhtml,再依据DOM库生成xml文件并建立DOM树。从DOM树中分别获取到包含图片和包含文字的标签,记录其属性值,通过对比属性检测页面内容是否被篡改;由于DOM树中的节点按文档中的标记或信息片段来形成的,在加载整个文档成功构建DOM树后,将符合网页挂马类型的DOM树节点的关键字输出成事件序列,然后根据运些关键字再与此结果标签的短网址网页源码与数据库中短网址网页木马特征规则属性值通过KMP字符串匹配算法进行比对。这样从DOM树节点中找到关键字后就可以利用树型模型中的节点导航寻找特定源码信息,再与木马库的正则表达式进行进一步比对,从而确认短网址网页是否被挂马,此来提高检測短网址网页木马的效率,并减少因建立完整DOM树所消耗的资源。

  短网址的Hash算法

  短网址Hash算法将任意长度的二进制值映射为较短的固定长度的二进制值,这个小的二进制值称为Hash值。Hash值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的Hash都将产生不同的值。MD5是一种符合工业标准的单向128位的Hash方案,MD5典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。

  短网址系统在查询短网址网页是否被篡改时,先通过tidy工具结合String类里面的replace函数替换掉了内容基本不会变化的script和style标签,然后通过MD5加密短网址网页html代码与模板进行对比,若获取短网址网页的MD5编码与模板的相同则说明未篡改,否则进行字节匹配,查询具体的篡改位置。

  短网址的KMP字符串对算法

  KMP算法是由BF算法发展而来,BF算法的思想就是将目标串S的第一个字符与模式串T的第一个字符进行匹配,若相等,则继续比较S的第二个字符和T的第二个字符;若不相等,则比较S的第二个字符和T的第一个字符,依次比较下去,直到得出最后的匹配结果。实际发现在上述匹配过程中,有很多比较是多余的。而KMP算法中则尽量减少这神多余的匹配。其变化就在于KMP算法在匹配后,并不简单地从目标串S下一个字符开始新一轮的检测,而是依据在检测之前得到的有巧信息,构建模式画数,尽量跳过不必要的检测,从而达到一个较高的检测效率,使得问题的复杂度由0(mn)下降到0(m+n)。

  例如:在串S="abcabcabdabba"中查找T="abcabd",若下标从0开始,先是比较S[0]和T[0]是否相等,然后比较S[1]和T[1]是否相等,我们发现一直比较到S问和T[5]才不等。

字符串匹配失败

  字符串匹配失败

  在BF算法中,当这样一个失配发生时,T下标必须回溯到开始,S下标回溯的长度与T相同,然后S下标增1,然后再次比较。这次立刻发生了失配,T下标又回溯到开始,S下标增1,然后再次比较。此时还是发生了失配,T下标又回溯到开始,S下标増1,然后再次比较,发现匹配。

字符串匹配成功

  字符串匹配成功

  而在KMP算法中,其核也思想是利用己经得到的部分匹配信息来进行后面的匹配过程。看前面的例子,T问=‘d’的模式函数值等于2(next[5]=2),其实这个2表示T[5]=‘d’的前面有2个字符和开始的两个字符相同,且T阴=‘d’不等于开始的两个字符之后的第三个字符(T[2]=‘c,).

KMP模式函数

  KMP模式函数

  所此在S=‘‘abcabcabdabba’’中查找T="abcabd",如果使用KMP匹配算法,当第一次搜索到S[5]和T问不等后,S下标不是回溯到1,T下标也不是回溯到开始,而是根据T中巧5]=‘d’的模式函数值,直接比较別5阱T间是否相等,因此在第二次匹配后便完成此次工作。

  短网址正則表达式

  正则表达式,又称正规表示法、常规表示法(英语:Regular Expression,在代码中常简写为regex、regexp或民E),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个横式的文本。

  许多程序设计语言都支持利用正则表达式进行字符串操作。正则表达式的匹配都是通过正则表达式引擎实现的。正则表达式引擎分为两类:基于NFA(Nondeterministic Finite Automata,非确定型有巧状态自动机巧日基于DFA(Deterministic Finite Automaton,确定型有穷状态自动机)的引擎。在正则表达式匹配过程中,遵循两条重要的规则:1、优先选择最左端的结果;2、对标准匹配量词'{m,n}'、‘+’、‘*’、‘?’优先使用贪婪模式。

  在短网址系统中也多次用到正则表达式,与Pattern和Matcher配合使用,使问题能更方便高效地得到解决。

上一篇:如何利用短链接打开淘宝市场

下一篇:保证网络安全应知的一些学问

精彩评论
评论
热门文章
980安全专家教您认识短链接安全
防护恶意网址用短链接欺骗的对策
对付恶意短链接我有妙招
蓝瘦、香菇,每天和短链接技术打交道
短信利用短网址撬动移动营销市场
文章归档
2016年12月
2016年11月
2016年10月
2016年09月
2016年07月
2016年06月
热门标签
短网址
短链接
网址缩短
短网址服务
短网址应用
短网址营销
短网址生成
缩短网址
短链接生成
短网址还原
短网址检测法
自定义短网址