在Web应用中,从浏览器那接收到的Http的全部内容,都可以在客户端自由地变更、篡改,所以Web应用可能会接收到与预期数据不相同的内容。 在Http请求报文内加载攻击代码,就能发起对Web应用的攻击。通过URL查询字段或表单、Http首部、Cookie等途径吧攻击代码传入,若这时Web应用存在安全漏洞,那内部信息就会遭到窃取,或被攻击者拿到管理权限。
实施Web应用的安全对策可大致分为以下两部分:
跨站脚本攻击(Cross-Site Scripting,XSS)是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击。动态创建的HTML部分有可能隐藏着安全漏洞。 跨站脚本攻击有可能造成以下影响:
SQL注入(SQL Injection)是指针对Web应用使用的数据库,通过运行非法的SQL而产生的攻击。 SQL注入攻击有可能会造成以下等影响:
OS命令注入攻击(OS Command Injection)是指通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险。
Http首部注入攻击(Http Header Injection)是指攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击。向首部主体内添加内容的攻击称为Http响应截断攻击(Http Response Splitting Attack)。 Http首部注入攻击有可能会造成以下一些影响:
邮件首部注入(Mail Header Injection)是指Web应用中的邮件发送功能,攻击者通过向邮件首部To或Subject内任意添加非法内容发起的攻击。利用存在安全漏洞的Web网站,可对任意邮件地址发送广告邮件或病毒邮件。
目录遍历(Directory Traversal)攻击是指对本无意公开的文件目录,通过非法截断其目录路径后,达成访问目的的一种攻击。 通过 Web 应用对文件处理操作时,在由外部指定文件名的处理存在疏漏的情况下,用户可使用 …/ 等相对路径定位到/etc/passed等绝对路径上,因此服务器上任意的文件或文件目录皆有可能被访问到。这样一来,就有可能非法浏览、篡改或删除 Web 服务器上的文件。 固然存在输出值转义的问题,但更应该关闭指定对任意文件名的访问权限。
远程文件包含漏洞(Remote File Inclusion)是指当部分脚本内容需要从其他文件读入时,攻击者利用指定外部服务器的URL充当依赖文件,让脚本读取之后,就可运行任意脚本的一种攻击。 这主要是 PHP 存在的安全漏洞,对 PHP 的 include 或 require 来说,这是一种可通过设定,指定外部服务器的 URL 作为文件名的功能。但是,该功能太危险,PHP5.2.0 之后默认设定此功能无效。 固然存在输出值转义的问题,但更应控制对任意文件名的指定。