基于Web系统的跨站脚本攻击漏洞解析

2019-12-23 15:57巨腾飞田国敏
网络安全技术与应用 2019年11期
关键词:脚本攻击者漏洞

◆巨腾飞 田国敏 杨 京

(陕西省网络与信息安全测评中心 陕西 710065)

最早的Web系统程序只是为了单纯的应用,只要运行程序的这台计算机安全,那么这个应用程序也就是安全的。如今,时过境迁,Web应用程序不同以往,都运行于不同的服务器,如客户端服务器、审计服务器、Web应用服务器、数据库服务器和日志服务器等。因为它们一般可以让所有登录互联网的人访问,所以这些Web应用程序就成为众多黑客攻击的目标。OWASP是世界上最知名的Web安全研究组织,OWASP每隔一段时间会发布Web安全漏洞TOP10,XSS漏洞便是TOP10其中的一种安全问题,且一直名列前茅,攻击者利用网站漏洞,把恶意的脚本写入到网页中,当用户浏览这些网页时,就会执行其中的恶意脚本,对受害用户可能采用cookie资料窃取、会话劫持和钓鱼欺骗等攻击手段。

1 何为XSS漏洞

当网民在浏览网站或在阅读电子邮件时,通常会点击其中的链接。攻击者主要针对动态链接中插入一些恶意代码,就能够获取浏览者的信息,当接收到包含恶意代码的请求之后,会跳转到一个包含恶意程序的页面,而这个页面表面却显示得非常正常,不会使得网民怀疑。许多论坛、贴吧和电子商务等网站都允许用户发表包含外链的帖子,如果存在XSS漏洞,一旦被恶意攻击者利用,后果不堪设想。

2 XSS漏洞分类

常见XSS漏洞主要分为三种:反射型XSS漏洞(一种非持久性XSS漏洞)、存储型XSS漏洞(一种持久性XSS漏洞)、DOM型XSS漏洞。

2.1 反射型

经过后端,不经过数据库,首先这种类型的XSS漏洞需要攻击者在有漏洞的正常Web页面插入恶意代码,构造一个恶意链接,其次要保证恶意代码能够执行,最后诱使访客来点击,一般容易出现在搜索页面或者查询页面。

2.2 存储型

经过后端,也经过数据库,代码是存储在服务器中的,首先这种类型的XSS漏洞允许提前在正常页面插入恶意代码,攻击者一般在有数据库交互的地方进行尝试攻击,在如留言、发表文章及填写个人资料等地方,加入一些恶意代码,如果未进行过滤或过滤不严,那么这些代码将会储存到系统数据库服务器当中,当有用户访问此页面的时候就会触发代码执行,容易造成蠕虫传播、大量用户cookie被盗窃。这种攻击方式要想取得成功,一是需要管理员登录查看执行代码所在页面并且代码成功执行,二是需要本地搭建XSS漏洞接收平台以便于接收数据。

2.3 DOM型

这种类型的XSS是一种特殊类型的XSS,它是一种基于DOM文档对象模型的漏洞接口。该漏洞允许程序、脚本通过互联网动态地访问和修改文档内容、结构和样式等,经过处理后能够显示为页面的一部分。在Web系统页面中有许多页面的元素,当页面执行到达浏览器时,浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。攻击者可以通过传入参数去控制触发,经过JS脚本对文档对象进行篡改从而达到修改页面元素的目的。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于这个特性,就可以利用脚本来实现DOM型XSS漏洞的攻击。

3 XSS漏洞防范

XSS漏洞防范主要就是:过滤与转义输出。

过滤:对任何用户的输入、输出、二次调用时均进行校验,防止非法字符的执行,如引号、尖括号、加号等,从源头上防止脚本注入。

转义:转义属于最好的过滤方式,在任何输出和二次调用的时候进行加HTML实体一类的转码。

在平常Web程序中可以利用以下函数对出现xss漏洞的参数进行过滤:

(1)htmlspecialchars()函数,用于转义处理在页面上显示的文本。

(2)htmlentities()函数,用于转义处理在页面上显示的文本。

(3)strip_tags()函数,过滤掉输入、输出里面的恶意标签。

(4)header()函数,使用header("Content-type:application/json")用于控制json数据的头部,不用于浏览。

(5)urlencode()函数,用于输出处理字符型参数带入页面链接中。

(6)intval()函数,用于处理数值型参数输出页面中。

(7)自定义函数,在大多情况下,要使用一些常用的html标签,以美化页面显示,如留言、发表文章、个人资料中心等情况下,要采用白名单的方法使用合法的标签显示,过滤掉非法字符。

4 结束语

本文Web系统的XSS漏洞主要是基于信息安全从业者日常工作中的总结,全面介绍了何为XSS漏洞、XSS漏洞分类及XSS漏洞防范。XSS漏洞利用简单、影响巨大。强调如何进行整改,对网站开发者可以起到一定的启示作用,使其对XSS漏洞有更加清晰的认知,了解到XSS漏洞一旦被黑客攻击带来危害的严重性,更有助于提高网站安全管理人员的安全意识。

猜你喜欢
脚本攻击者漏洞
漏洞
基于贝叶斯博弈的防御资源调配模型研究
基于selenium的SQL注入漏洞检测方法
正面迎接批判
正面迎接批判
自动推送与网站匹配的脚本
漏洞在哪儿
举一反三新编
愚公移山