2.1 HTML技术
超文本标记语言(Hypertext Marked Language,HTML)是由Web的发明者Tim Berners-Lee和同事Daniel W. Connolly于1990年创立的一种标记语言。用HTML编写的超文本文档称为HTML文档,它能独立于各种操作系统平台(如UNIX、Windows和macOS等)。使用HTML语言,将所需要表达的信息按某种规则写成HTML文件,由浏览器识别,并将这些HTML文件“翻译”成可以识别的信息,即现在所见到的网页。
HTML是通向Web技术世界的钥匙。
1.HTML基础
HTML是Internet上使用最为广泛的语言,也是构成网页文档的主要语言。HTML文本是由HTML命令组成的描述性文本,HTML命令可以说明文字、图形、动画、声音、表格和链接等。HTML的结构包括头部(Head)和主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。
设计HTML语言的目的是将存储在一台计算机中的文本或图形与另一台计算机中的文本或图形方便地链接起来,形成一个有机的整体,不需要考虑特定信息是在当前计算机上还是在网络中的其他计算机上,用户只需单击文档中的一个链接,Internet就会立即将其链接到相关内容,而这些内容可能存放在网络中的另一台计算机中。
另外,HTML是网络的通用语言,是一种简单、通用的全标记语言。它允许网页制作人建立文本与图片相结合的复杂页面,这些页面可以被网上任何其他人浏览,无论使用的是什么类型的计算机或浏览器。HTML是组合成一个文本文件的一系列标签。它们像乐队的指挥,告诉乐手们哪里需要停顿,哪里需要激昂。
2.HTML安全攻击
HTML安全攻击是攻击者利用HTML语言自身特点进行的攻击,实际上是一个网站允许恶意用户通过输入HTML语言的标签进行攻击。由于HTML是用于定义网页结构的语言,如果攻击者可以注入HTML,它们实质上可以改变浏览器呈现的内容和网页的外观。网络钓鱼就是创建HTML表单欺骗用户,以获取用户提交的敏感信息。
利用HTML语言的特点,在网站文本框中,输入类似于<tr> <td> <input> </td> </tr><table>的内容,就会影响表格的显示结构。将这些数据显示到页面就会产生HTML攻击。
HTML注入攻击利用网页编程的HTML语法,破坏网页的展示,甚至导致页面的源码展示在页面上,破坏正常的网页结构,或在正常的网站中内嵌钓鱼登录框,对网站攻击比较大。
实例1:网页中用户可以填写内容的位置,如果填写成“<table”,则可能导致网页源代码全部展示出来,或整个网页结构错乱。
实例2:网页中用户可以填写内容的位置,如果填写成“<iframe src= XXX.com>”,则可能导致该网页成为钓鱼网页。
实例3:网页中用户可以填写内容的位置,如果填写成“<script>alert(111)</script>”,则可能导致跨站脚本(Cross Site Scripting,XSS)攻击。
3.HTML安全防护
对HTML语言攻击的防护,主要采用两种方式。
● 净化输入,即对每个输入框可以接收的数据要有严格的定义,包括数据类型、长度等。如果用户输入的内容不符合要求,就拒绝向后台提交。当然这种净化输入不能完全依靠前端的JavaScript,因为攻击者可以通过工具绕行JavaScript的控制,所以除了前端检查,在后台真正提交数据库前还要做服务器端的输入合法性校验,只有通过合法性校验,才能真正执行。
● 格式化输出,即对于要展示的用户数据需要经过适当的编码才能输出,避免出现脚本执行或破坏HTML文档结构。