如何修复XSS跨站脚本漏洞?

         跨站脚本攻击的英文全称CporSSSateScript,为了更好地区分样式表,缩写为XSS。原因是网站将客户键入的内容输出到页面,在此过程中可能会有恶意代码被浏览器执行。跨站脚本攻击是指恶意攻击者将恶意html代码插进网页页面,当客户浏览网页时,嵌入网页页面的html代码将被执行,从而达到恶意客户的特殊目的。已知跨站脚本攻击漏洞有三种:1)存储;2)反射;3)基于DOM。

测试方法:1.GET跨站脚本:键入参数后,逐个添加以下句子。以第一条为例,键入http://www.exmaple.com/page.xx?name=。文本输入框:需要测试页面上所有可以提交参数的地方。具体跨站脚本的测试句子可以根据实际情况自行结构,触发事件等进行切换。这里只列出一些最常见的结构句子。

例子:登录窗口用户名中有反射XSS注入。点击图片登录,成功弹出内容。风险分析:

攻击者可以利用这个漏洞构建钓鱼链接,欺骗受害者访问并填写用户名和密码,从而窃取客户的认证凭证。

修复办法:

1.整体修复方法:验证所有键入数据,有效检测攻击;适当编码所有输出数据,防止任何成功注入的脚本在浏览器端运行。具体如下:2.键入验证:在某些数据被接受为可显示或存储之前,使用标准键入验证机制验证所有键入数据的长度、类型、语法和业务规则。3.输出代码:在输出数据之前,确保客户提交的数据已经正确编码,建议对所有字符进行代码,而不仅个子集。4.明确指定输出的编码方法:不允许攻击者为客户选择编码方法(如ISO8859-1或UTF8)。5.注意黑名单验证方法的局限性:只找或替换一些字符(如<、>或类似script的关键词),很容易被XSS变种攻击绕过验证机制。

警惕标准化错误:在验证键入之前,必须进行解码和标准化,以满足当前应用的内部表达方式。请确认应用程序不会对同一键入进行两次解码。过滤客户端提交的数据,一般建议过滤掉特殊字符,如双引号()、尖括号(<、>),或者过滤掉客户端提交的数据中包含的特殊字符,如将双引号(转换为实体形式,<对应的实体形式为<,<对应的实体形式为>以下是需要过滤的常见字符。

分享: