浅谈xss

本文详细探讨了XSS(跨站脚本攻击),包括反射型、存储型和基于DOM的XSS类型,解释了它们的攻击原理。同时,文章提醒了XSS的普遍原因——输入过滤不严和输出时的检查不足,并提出了AceMan的解决方案,如richtext处理方法,以及防范XSS攻击的基本策略。最后,简要提到了CSRF(跨站请求伪造)攻击的概念和分类。
摘要由CSDN通过智能技术生成
  • 这样来形容XSS “ 如果把浏览器看作WEB2.0后时代的操作系统,那么客户端脚本就相当于传统的应用程序,而XSS的攻击方式其实就相当于在被攻击者的系统上执行了一个木马程序。但这种“木马”有个很大的缺点,就是无法像传统木马那样在操作系统中安家,以后还能自动执行。 ”

- XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。

==为什么会出现XSS呢,这个没什么好说的,肯定是过滤不严,或者就是程序猿认为XSS并没有什么实际的用途,从而忽略了XSS攻击的产生。比如在一个搜索框里面,对于输入数据没有一点过滤的话,那么我们提交下面这条语句==

<script>alert(’test’)</script>

结果是什么,大家应该都知道,就是页面弹出了一个对话框。

xss的类型

XSS的类型一般是三种:
  • 第一种:反射型XSS
    这种xss,跨站代码一般存在于某一个链接中,当有攻击者访问这样的连接时,跨站代码就被执行,这类跨站代码一般不会存储在服务器上面
  • 第二种:存储型XSS
    这种xss用起来比较方便,跨站代码会存储在服务器上面数据库中,换句话就是可以持久的进行攻击,亦称持久型XSS
  • 第三种:就是基于DOM的XSS
    这是由于客户端脚本自身的解析不正确导致的安全问题
1 : 反射型XSS的攻击原理
  • 反射型XSS,是最常用,使用最广的一种方式。它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。
    既然是需要用户点击才能触发的跨站,那么这就要考验你的忽悠水平了,就像前段时间论坛出现的XSS攻击,就是通过转账,然后被攻击者查看消息从而触发的一种反射型XSS攻击
    再如:
http://searchb.dangdang.com/?key=f',true,1);alert(1);
2 : 存储型XSS的攻击原理
  • 存储型就是攻击脚本被存储到了数据库或者文件中,服务器端(可能是别的应用或者别的页面)在读取了存储的内容后回显了,就是存储型。这种情况用户可能直接打开正常的页面就会看到被注入了

  • ++原理其实也很简单++
    XSS代码被提交给网站–>网站把XSS代码存储进数据库—>当该页面再次被请求时,服务器发送已经被植入XSS代码的数据给客户端—>客户端执行XSS代码

  • 比较常见的例子是在留言板上插入XSS代码,前提当然是留言内容过滤不善
    想内容中添加[/code][/code]
    这样就会弹出对话框,==当然只要是可以添加内容的地方,你都可以试试XSS==,比如说QQ空间的装扮里面,有一个自定义模块,你可以选择图片,然后添加如下代码

javascript:alert('XSS')"
  • 当然,其可以执行的前提是服务端代码是这样写的
A=get[a]
    <img src=$a>
3 : XSS BASED DOM
  • DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM—based XSS漏洞。
    DOM—based XSS攻击源于DOM相关的属性和方法,被插入用于XSS攻击的脚本。一个典型的例子如下:
    HTTP请求http://www.Xss.com/hello.html?name=test 使用以下的脚本打印出登录用户test的名字,即
    <SCRIPT>
    var pos=docmnent.URL.indexOf(”name=”)+5;
    document.write (document.URL.substring(pos,document.URL.1ength));
    < /SCRIPT>
  • 如果这个脚本用于请求http://www.Xss.com/hello.html?name=时,就
    导致XSS攻击的发生。
    当用户点击这个链接,服务器返回包含上面脚本的HTML静态文本,用户浏览器把HTML文本解析成DOM,DOM中的document对象URL属性的值就是当前页而的URL。在脚本被解析时,这个URL属性值的一部分被写入HTML文本,而这部分HTML文本却是JavaScript脚本,这使得成为页面最终显示的HTML文本,从而导致DOM—base XSS攻击发生。

!!! XSS的防范办法

  • 上面简单说了一下各种XSS的原理,以及最简单的利用方法,当然一些高级的XSS利用技巧,这里不会涉及,授人以鱼不如授人以渔嘛。还靠各位去琢磨了。下面我们来简单说一下XSS的防范。
  • 现在的XSS如此流行,原因何在。我想大家应该都知道,==就是在输入的时候没有做严格的过滤,而在输出的时候,也没有进行检查,转义,替换等
    所以防范的方法就是,不信任任何用户的输入,对每个用户的输入都做严格检查,过滤,在输出的时候,对某些特殊字符进行转义,替换等==;

比如aceMan的demo

aceMan的解决方法

// encodeHTML fix xss
function encodeHTML(source) {
    
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值