一、什么是XSS?怎么发生的?

  XSS(Cross site scripting)全称为跨站脚本攻击,是web程序中最常见的漏洞。指攻击者在网页中嵌入客户端脚本(例如Javascript),当用户浏览此网页时,脚本就会在用户的浏览器上执行,从而达到攻击者的目的。比如获取用户的cookie,导航到恶意网站,携带木马病毒等。

  

二、XXS漏洞的分类

  XXS漏洞按照攻击利用手法的不同,有以下三种类型:

  类型A,本地利用漏洞:这种漏洞存在于页面中客户端脚本自身。其攻击过程如下所示:

    Alice给Bob发送了一个恶意构造了web的URL。

    Bob点击并查看了这个URL。

    恶意页面中的Javascript打开了一个具有漏洞的HTML页面并将其安装在Bob电脑上。

    具有漏洞的HTML页面包含了在Bob电脑本地域执行的Javascript。

    Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。

  类型B,反射式漏洞:这种漏洞和类型A有些类似,不同的是web客户端使用server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。其攻击过程如下:;

    Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行账户信息)。

    charly发现Bob的站点包含反射性地XSS漏洞。

    charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。

    Alice在登陆到Bob的站点后,浏览charly提供的URL。

    嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。

    此脚本盗窃敏感信息(授权、信用卡、账号信息等),然后在Alice完全不知情的情况下将这些信息发送到charly的web站点。

  类型C,存储式漏洞:该类型是应用最为广泛而且有可能影响到web服务器自身安全的漏洞。骇客将攻击脚本上传到web服务器上,使得所有访问该页面的用户都面临信息泄露的可能,其中包括了web服务器的管理员。其攻击过程如下:

    Bob拥有一个web站点,该站点允许用户发布信息/浏览已发布的信息。

    charly注意到Bob的站点具有类型C的XSS漏洞。

    charly发布一个热点信息,吸引其他用户纷纷阅读。

    Bob或是任何的其他人如Alice浏览了该信息,其会话cookie或其他信息将被charly盗走。

  类型A直接威胁用户个体,而类型B和类型C所威胁的对象都是企业级web应用。

三、XSS的防御措施

  原则:不相信客户输入的数据

  注意:攻击代码不一定在<script></script>中

  1.将重要的cookie标记为http only,这样的话JavaScript中的document.cookie语句就不能获取到cookie了

  2.只允许用户输入我们期望的数据。例如:年龄的textbox中,只允许用户输入数字,而数字之外的字符都过滤掉。

  3.对数据进行HTML encode 处理

  

  4.过滤或移除特殊的HTML标签,例如:<script>,<iframe>,&lt;for<,&gt;for>,&quot for

  5.过滤JavaScript事件的标签,例如"onclick=","onfocus"等。

四、测试XSS漏洞

  方法一:查看代码,查找关键的变量,客户端将数据传送给web服务器。一般通过三种方式Querystring,From表单,以及cookie。例如在ASP的程序中,通过request对象获取客户端的变量。

  

    假如变量没有经过HTMLEncode处理,那么这个变量就存在一个XSS漏洞。

  方法二:准备测试脚本

    在网页中的textbox或其他能输入数据的地方,输入这些测试脚本,看能不能弹出对话框,能弹出的话,说明存在XSS漏洞。

    在URL中查看有哪些变量通过URL把值传给了web服务器,把这些变量的值退换成我们测试的脚本。然后看我们的脚本是否执行。

  方式三:自动化测试XSS漏洞

    现在已经有很多XSS扫描工具了。实现XSS自动化测试非常简单,只需要用HttpWebRequest类。把包含XSS测试脚本,发送给web服务器,然后查看HttpWebResponse中,我们的XSS测试脚本是否已经注入进去了。

XSS攻击(跨站脚本攻击)的更多相关文章

  1. thinkphp 防止XSS(跨站脚本攻击)

    XSS(跨站脚本攻击)可以用于窃取其他用户的Cookie信息,要避免此类问题,可以采用如下解决方案: 直接过滤所有的JavaScript脚本: 转义Html元字符,使用htmlentities.htm ...

  2. xss(跨站脚本攻击)

    xss(跨站脚本攻击) 原理:攻击者可以通过在页面中注入恶意链接或者脚本代码,当受害者访问时,脚本代码会在其浏览器中执行,这个时候,我们可以获取当前用户的cookie或者进行重定向等操作. xss造成 ...

  3. 聊两句XSS(跨站脚本攻击)

    XSS(跨站脚本攻击),聊两句,五毛的. XSS的危害: 窃取Cookie,盗用用户身份信息 这玩意儿是大多数XSS的目标,也好解决,可以先治个标,直接设置HttpOnly=true ,即不允许客户端 ...

  4. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  5. XSS防跨站脚本攻击-AntiSamy的基本使用

    XSS:跨站脚本攻击(Cross Site Scripting),为不和 CSS混淆,故将跨站脚本攻击缩写为XSS.XSS是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页时,嵌入其 ...

  6. XSS(跨站脚本攻击)的最全总结

    从OWASP的官网意译过来,加上自己的理解,算是比较全面的介绍.有兴趣的可私下交流. XSS 跨站脚本攻击 ============================================== ...

  7. 关于XSS(跨站脚本攻击)和CSRF(跨站请求伪造)

    我们常说的网络安全其实应该包括以下三方面的安全: 1.机密性,比如用户的隐私被窃取,帐号被盗,常见的方式是木马. 2.完整性,比如数据的完整,举个例子,康熙传位十四子,被当时四阿哥篡改遗诏:传位于四子 ...

  8. Magicodes.WeiChat——使用AntiXssAttribute阻止XSS(跨站脚本攻击)攻击

    跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS.恶意攻击者往Web页面里插 ...

  9. Web安全测试之XSS(跨站脚本攻击)

    XSS 全称(Cross Site Scripting) 跨站脚本攻击, 是Web程序中最常见的漏洞.指攻击者在网页中嵌入客户端脚本(例如JavaScript), 当用户浏览此网页时,脚本就会在用户的 ...

  10. XSS【跨站脚本攻击】

    从客户端(txt="<script><a href="www...")中检测到有潜在危险的 Request.Form 值. 如果你使用的是.NET 3. ...

随机推荐

  1. maven将xml文件一起打包

    pom文件配置 <build> <!-- 将mapper.xml一起打包 --> <resources> <resource> <director ...

  2. Java 中 PO 与 VO 的区别

    什么是PO PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之外, ...

  3. Redis在Window下的安装部署

    一.下载 由于redis官方不支持windows,所以需要在github上下载window的版本:下载地址.redis约定版次版本号(即第一个小数点后的数字)为偶数的版本是稳定版本(如2.8,3.0) ...

  4. RabbitMQ的高级特性概念理解

    1.RabbitMQ中的消息如何保障百分之百的投递成功? 答:百分之百的投递成功,方案可以参考下面的2.3. 2.什么是生产者端的可靠性投递? 答:第一步,生产者保障消息的成功发出.第二步,保障Rab ...

  5. Kafka与RabbitMQ对比

    Infi-chu: http://www.cnblogs.com/Infi-chu/ Kafka是LinkedIn在2012年发布的开源的消息发布订阅系统,他主要用于处理活跃的流式数据.大数据量的数据 ...

  6. smobiler自适应不同手机分辨率

    在smobiler中可以通过相对布局或者绝对布局实现自适应不同手机分辨率. 例如实现下图中的布局,图中的布局实际可以分成3个部分,部分1可以使用Title控件,部分2可以使用Panel(在Panel中 ...

  7. MySQL之架构简单分析

    上图为MySQL的简易架构图,给您有一个大概的概念,下面我将为您进行进一步的分析. 连接器: 当连接MySQL数据库时,等待的将是MySQL服务端的连接器:连接器的职责是和客户端建立连接.获取权限.维 ...

  8. manjaro安装后的配置

    1.添加中科大源 参考https://blog.csdn.net/liyunfu233/article/details/87381017 sudo nano /etc/pacman.conf 在文末添 ...

  9. Educational Codeforces Round 71 (Rated for Div. 2)

    传送门 A.There Are Two Types Of Burgers 签到. B.Square Filling 签到 C.Gas Pipeline 每个位置只有"高.低"两种状 ...

  10. 3. java 方法入门

    一.方法定义 1. 定义格式 public static void 方法名称(){ 方法体 } 1. 方法名称:命名和变量一致,小驼峰式 2. 方法体:大括号中可以包含任意条语句 注意事项: 1. 方 ...