浅谈XSS攻击与防护

XSS漏洞是Web应用程序中最常见的漏洞之一,XSS-即Cross Site Scripting. 为了与"CSS"不混淆,故简称XSS.。

XSS的原理为恶意攻击者往Web页面里插入JavaScript恶意代码。当用户浏览到写入JavaScript之时,被嵌入Web网页里面的JavaScript恶意代码就会自动被执行,从而达到恶意攻击用户的目的,例如盗取各类用户帐号、网站挂马、盗窃企业重要信息等。

那么如何去防范这类侵害呢?你又了解它多少呢?小编特在此与大家分享全面的XSS常识,让我们拥有一个安全的Web环境。

一.XSS的分类

XSS主要分为两大类:非持久型攻击、持久型攻击。非持久型攻击(反射型XSS):经过后端,不经过数据库;持久型攻击(存储型XSS):经过后端,经过数据库。

1.持久型也可认为是存储型XSS:当恶意的JavaScript代码写入web页面,会被存储到应用服务器端,简而言之就是会被存储到数据库。等用户再次打开web页面时,页面会继续执行恶意代码,达到持续攻击用户的作用。如下案例:在欢迎词处输入框输入JavaScript恶意代码进行保存,当用户在打开这个写入恶意JavaScript代码web页面的时候就会弹出带有恶意数据的弹窗。

2.非持久型XSS:非持久型XSS又叫反射型XSS,属于一次性攻击,仅对当次的页面访问产生影响。非持久型XSS攻击,要求用户访问一个被攻击者篡改后的链接,用户访问该链接时,被植入的攻击脚本被用户游览器执行,从而达到攻击目的。如下案例:通过搜索功能执行恶意的JavaScript代码点击搜索即执行恶意的JavaScript代码。

3. DOM是一个平台和语言都中立的接口,可以执行程序和脚本,能够动态访问和更新文档的内容、结构以及样式。DOM型XSS是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。如下案例:

http://**.**.**.**/tran/WCCMainPlatV5?CCB_IBSVersion=V5&SERVLET_NAME=WCCMainPlatV5&TXCODE=L10001&tourl=http://**.**.**.**");}alert('456789');});$(function(){if(aa=1){//

Xss防护方案:

Xss漏洞在web站点运用中是最为常见的漏洞之一,XSS会以各种方式执行恶意的JavaScript代码来破坏用户使用的站点。我们能够修补XSS漏洞,但是我们也不能100%的肯定没有人可以打破我们的过滤机制。恶意的攻击者总能够找到办法,绕过我们的过滤机制,从而进行恶意代码的执行。

1. 在web页面上,将用户输入的数据都进行转译,也就是将常用的恶意代码中的[,”,,&]等符号都用[,",&]字符进行转译。当这些html标签符号被转译后,浏览器就会拿它当作一个普通字符串对待,而不是当作一个标签的开始/结束标志对待。从而不会执行JavaScript的恶意代码。

2. DOM型XSS的防御方法:DOM型XSS主要是由客户端的脚本通过DOM动态数据输入到页面,而不是依赖于将数据提交给服务器端,从客户端获得DOM中的数据在本地执行。因而,仅从服务器端是无法防御的。其防御在于:(1) 避免客户端文档重写、重定向或其他敏感操作;同时,避免使用客户端数据,这些操作尽量在服务器端使用动态页面来实现;(2) 分析和强化客户端JS代码;特别是受到用户影响的DOM对象,注意能直接修改DOM和创建HTML文件的相关函数或方法,并在输出变量到页面时先进行编码转义,如输出到HTML则进行HTML编码、输出到则进行JS编码。

利用XSS漏洞之所以具有重要意义,是因为通常难以看到XSS漏洞的威胁,而该XSS攻击则将其发挥得淋漓尽致。所以,小编在此与你一起分享了有关XSS攻击的理论知识和常见问题,不知是否对你有所帮助呢?让我们共同来创建一个安全、健康的Web环境。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180326A0DPJK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券