XSS(Cross Site Script)跨站脚本攻击。它指的是恶意攻击者往Web 页面里插入恶 意html 代码,当用户浏览该页之时,嵌入其中Web 里面的html 代码会被执行,从而达到侵害用户信息目的。
 
原理
       攻击者先构造一个跨站页面,利用script、<IMG>、<IFRAME>等各种方式使得用户浏览这个页面时,触发对被攻击站点的http 请求。如果被攻击者如果已经在被攻击站点登录,就会持有该站点cookie。这样该站点会认为 被攻击者发起了一个http 请求。而实际上这个请求是在被攻击者不知情的情况下发起的,由此攻击者在一定程度上达到了冒充被攻击者的目的。
 
分类: 
XSS漏洞分类:
     本地漏洞(DOM-based or local):漏洞存在于页面中客户端脚本自身。其攻击过程如下所示:
  1. Alice给Bob发送一个恶意构造的Web URL。
  2. Bob点击并查看了这个URL。
  3. 恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。
  4. 具有漏洞的HTML页面包含了在Bob电脑本地域执行的JavaScript。
  5. Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。
 
    反射式漏洞(Reflected):Web客户端使用Server端脚本生成页面为用户提供数据时【来自页面参数window.location.search】,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中。其攻击过程如下:
  1. Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行帐户信 息)。
  2. Charly发现Bob的站点包含反射性的XSS漏洞。
  3. Charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。
  4. Alice在登录到Bob的站点后,浏览Charly提供的URL。
  5. 嵌入到URL中的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、帐号信息等)然 后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。
 
    存储式漏洞(Stored):该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞【来自服务端返回值(该值可由用户构造)】,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能。其攻击过程如下:
  1. Bob拥有一个Web站点,该站点允许用户发布信息/浏览已发布的信息。
  2. Charly注意到Bob的站点具有类型存储式的XXS漏洞。
  3. Charly发布一个热点信息,吸引其它用户纷纷阅读。
  4. Bob或者是任何的其他人如Alice浏览该信息,其会话cookies或者其它信息将被Charly盗走。
 
XSS跨站攻击三部曲
     
 
防御
    1. 防堵跨站漏洞,阻止攻击者利用在被攻击网站上发布跨站攻击语句
       不可以信任用户提交的任何内容,首先代码里对用户输入的地方和变量都需要仔细检查长度和    对”<”,”>”,”;”,”’”等字符做过滤;其次任何内容写到页面之前都必须加以 encode 。
    2. Cookie 防盗
       首先避免直接在cookie 中泄露用户隐私,例如email、密码等等。
       其次通过使 cookie 和系统ip 绑定来降低cookie 泄露后的危险。

3. 尽量采用POST 而非GET 提交表单

POST 操作不可能绕开javascript 的使用,这会给攻击者增加难度,减少可利用的跨站漏洞。

4. 严格检查refer

检查http refer 是否来自预料中的url。这可以阻止第2 类攻击手法发起的http 请求,也能防止大部分第1 类攻击手法,除非正好在特权操作的引用页上进行了跨站访问。

5. 将单步流程改为多步,在多步流程中引入效验码

多步流程中每一步都产生一个验证码作为hidden 表单元素嵌在中间页面,下一步操作时这个验证码被提交到服务器,服务器检查这个验证码是否匹配。首先这为第1 类攻击者大大增加了麻烦。其次攻击者必须在多步流程中拿到上一步产生的效验码才有可能发起下一步请求,这在第2 类攻击中是几乎无法做到的。

6. 引入用户交互

简单的一个看图识数可以堵住几乎所有的非预期特权操作。

7. 只在允许匿名访问的地方使用动态的javascript。

8. 对于用户提交信息的中的img 等link,检查是否有重定向回本站、不是真的图片等可疑操作。

9.文件上传时,注意检查文件头以确认文件类型是否符合合法的安全类型,如上传文件要求是图片类型,不能只检查文件后缀。

10.对于用户上传的文件,不允许直接提供静态访问方式,在用户访问时,必须对文件进行鉴权,鉴权后,通过文件流的方式输出

 
 

XSS跨站脚步攻击及防范的更多相关文章

  1. XSS跨站攻击

    目录 1 XSS跨站攻击简介 1 1.1 什么是XSS 1 1.2 XSS的分类 1 1.3 XSS的危害 1 2 XSS的攻击原理 1 2.1 本地式漏洞攻击 1 2.2 存储式漏洞攻击 2 2.3 ...

  2. 云锁Linux服务器安全软件安装及防护webshell、CC、XSS跨站攻击设置

    无论我们在使用电脑,还是使用VPS/服务器的时候,最为担心的就是服务器是否有安全问题,尤其是网站服务器再遭受攻击的时候如何得到防护.对于大 部分站长用户来说,我们可能只会使用基础的环境,如果真遇到问题 ...

  3. Laravel5中防止XSS跨站攻击的方法

    本文实例讲述了Laravel5中防止XSS跨站攻击的方法.分享给大家供大家参考,具体如下: Laravel 5本身没有这个能力来防止xss跨站攻击了,但是这它可以使用Purifier 扩展包集成 HT ...

  4. WAF——针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入、XSS跨站、Webshell上传、命令注入、非法HTTP协议请求、非授权文件访问等

    核心概念 WAF Web应用防火墙(Web Application Firewall),简称WAF. Web攻击 针对Web应用发起的攻击,包括但不限于以下攻击类型:SQL注入.XSS跨站.Websh ...

  5. 用shell脚本批量进行xss跨站攻击请求

    由于执行的xss攻击请求他多了,初步估计要执行83次,而且还要执行3篇,如果手工一个一个去执行,说出去,我还配叫自动化大师吗: 有鉴于此,边打算自己编写一个脚本进行批量执行: 而短脚本的编写,非she ...

  6. 二十五:XSS跨站值原理分类及攻击手法

    HTML DOM树 XSS跨站产生原理,危害,特点 本质,产生层面,函数类,漏洞操作对应层,危害影响,浏览器内核版本 XSS是什么? XSS全称跨站脚本(Cross Site Scripting),为 ...

  7. XSS跨站及利用

    (一)软件测试环境以及搭建 测试环境:本地 XAMPP 1.7.1 测试软件:PHP168整站v5.0 软件下载地址 http://down2.php168.com/v2008.rar PHP.ini ...

  8. 修复XSS跨站漏洞

    XSS跨站漏洞最终形成的原因是对输入与输出没有严格过滤. 1.输入与输出 在HTML中,<,>,",',&都有比较特殊的意义.HTML标签,属性就是由这几个符合组成的.P ...

  9. DVWA的Xss跨站总结

    Xss跨站总结 初级防护的代码 Poc:<script>alert(1)</script> 上图防护的代码 为输入的结果就为输出的结果 中级防护的代码 Poc:<scri ...

随机推荐

  1. mongodb 的服务启动和基本操作命令

    由于在dos 下操作mongodb 很不方便 所以我推荐大家使用mongodb 的可视化工具robomongo  这个是robomongo的下载网址 https://robomongo.org/dow ...

  2. 【javascript】谈谈HTML5 ——HTML兽进化, H5兽!

    作为一名Web开发者,可能你并没有对这个“H5”这个字眼投入太多的关注,但实际上它早已不知不觉进入到你的开发中,并且总有一天会让你不得不正视它,了解它并运用它   打个比方:<海贼王>中的 ...

  3. 在centos6上实现编译安装lamp和wordpress,并编译xcache

    author:JevonWei 版权声明:原创作品 软件环境: centos6.9 httpd-2.4.27.tar.bz2 apr-1.5.2.tar.bz2 apr-util-1.5.4.tar. ...

  4. 一步步带你做vue后台管理框架(二)——上手使用

    系列教程<一步步带你做vue后台管理框架>第二课 github地址:vue-framework-wz 线上体验地址:立即体验 闲扯再多不会用也没白搭,这节课我来带大家直接上手框架,体验到简 ...

  5. Visual Studio2017数据库数据比较

    一.前言 上一篇文章我们介绍了如何使用VS2017对SSMS数据库进行架构比较.这一篇文章我们将继续介绍如何对SSMS数据库的数据进行比较.数据的比较也是很常见的,比如我们要比较当前版本的数据库相对上 ...

  6. ASP.NET Core的身份认证框架IdentityServer4(8)- 使用密码认证方式控制API访问

    前言 本文及IdentityServer这个系列使用的都是基于.net core 2.0的.上一篇博文在API项目中我使用了icrosoft.AspNetCore.Authentication.Jwt ...

  7. Java学习记录:降低耦合度

    耦合度定义 耦合度(Coupling)是对模块间关联程度的度量.耦合的强弱取决与模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少. 模块间的耦合度是指模块之间的依赖关系,包括控制关系.调用 ...

  8. java aio nio bio

    转自:http://blog.csdn.NET/liuxiao723846/article/details/45066095 Java中的IO主要源自于网络和本地文件 IO的方式通常分为几种,同步阻塞 ...

  9. 201521123082《Java程序设计》第3周学习总结

    201521123082<Java程序设计>第3周学习总结 标签(空格分隔): Java 1.本周学习总结 XMind图: 2.书面作业 Q1.代码阅读 public class Test ...

  10. 201521123109《java程序设计》第三周学习总结

    1. 本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用思维导图将这些碎片化的概念.知识组织起来.请使用纸笔或者下面的工具画出本周学习到的知识点.截图或者拍照上传. 2. 书面作 ...