什么是XSS攻击?
XSS
是跨站脚本攻击(Cross Site Scripting)
,为不和层叠样式表(Cascading Style Sheets, CSS)
的缩写混淆,故将跨站脚本攻击缩写为XSS。
恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。
XSS的危害?
</>
1.窃取网页浏览中的cookie值
在网页浏览中我们常常涉及到用户登录,登录完毕之后服务端会返回一个cookie值。这个cookie值相当于一个令牌,拿着这张令牌就等同于证明了你是某个用户。如果你的cookie值被窃取,那么攻击者很可能能够直,接利用你的这张令牌不用密码就登录你的账户。如果想要通过script脚本获得当前页面的cookie值,通常会用到document.cookie。
试想下如果像空间说说中能够写入xss攻击语句,那岂不是看了你说说的人的号你都可以登录(不过某些厂 商的cookie有其他验证措施如: Http-Only保 证同一cookie不能被滥用)
</>
2.劫持流量实现恶意跳转
这个很简单,就是在网页中想办法插入一句像这样的语句:
<script>
window.location.href="http://www.baidu.com";
</script>
那么所访问的网站就会被跳转到百度的首页。
XSS攻击大致上分为两类?
</>
一类是反射型XSS,又称非持久型XSS,。
</>
一类是储存型XSS,也就是持久型XSS。
反射型XSS?
也就是攻击相对于访问者而言是一次性的,具体表现在我们把我们的恶意脚本通过url的方式传递给了服务器,而服务器则只是不加处理的把脚本“反射”回访问者的浏览器而使访问者的浏览器执行相应的脚本。
也就是说想要触发漏洞,需要访问特定的链接才能够实现。
储存型XSS?
它与反射型XSS最大的不同就是服务器再接收到我们的恶意脚本时会将其做一些处理。
例如储存到数据库中,然后当我们再次访问相同页面时,将恶意脚本从数据库中取出并返回给浏览器执行。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。
还记得在文章开头提到的留言板的例子吗?那通常就是储存型XSS。当有人在留言内容中插入恶意脚本时,由于服务器要像每一个访客展示之前的留言内容,所以后面的访客自然会接收到之前留言中的恶意脚本而不幸躺枪。
这个过程一般而言只要用户访问这个界面就行了,不像反射型XSS,需要访问特定的URL。
什么是csrf攻击?
这也是-种常见的网站攻击手段,它主要利用的是我们网站对于用户的信任。
**什么意思呢?**简单讲就是你刚刚登陆了腾讯充值中心,登陆充钱完了,你就关掉网站了,换了另外一个网站www.qq.com
。
然后这个网站里面有个图片或者是超链接,这个url是www.qq. com/chongzhizhongxin/pay?accout=xiaomizhou&number=10000
; (我 们假设这是qq充值中心对于充值的api接口,现实中肯定不是这样也没有这么简单)。只要你点击了这个按钮,你就会向小米粥账户充值10000个q币了。
</>
为什么能够这样呢?
因为你刚刚登陆过qq充值系统不久,登陆状态还没有.消失,信息都还在,所以能够直接调用接口进行支付。在这个过程中,黑客没办法知道你的用户信息,支付密码,甚至你的账户。但是凭借着qq充值网站对于用户的信任,以为这是你本人的操作,所以执行了。
</>
那么怎么防御呢?
只要我们开发人员,在一些重要的接口上设置一个验证过程,而这个验证是需要在qq充值中心网页的一个随机码(可以是时间戳加密),然后通过一系列的加密才能够获得。
而csrf攻击是在www.qq.com
上发布出来的,没有进入到qq充值中心,所以无法获取这个随机数,从而调用接口的时候这个部分的信息为空或者错误,然后调用失败。