如何防御基于页面的攻击:XSS

我们今天继续聊攻击的防御,不过今天说的主角和之前稍有些区别,他主要不是针对服务器服务性能和服务能力进行攻击,而是通过页面漏洞来对用户或者用户的信息进行攻击。

XSS攻击,又叫做CSS,英文名 Cross Site Scripting,中文名跨站脚本攻击。主要利用的是javascript脚本来达到攻击的效果。那他是怎么样达到攻击效果的呢?

1、攻击的手法

我们做一个简单的实验就知道了。

f9f21a5912c6498297188206cb765a40.png

 我们写了一个最简单的网页,他由一个内容框和按钮组成。当在内容框里输入完内容以后,我们点击提交,我们的javascript代码就将输入的内容显示在网页上。我们简单的测试一下,在文本框中输入普通的文本:

639a3f4b6ff54084979e7262fc701483.png

 如果,这个时候,我们输入的不是普通文本,而是一段javascript代码:

<script>alert('game over');</script> 

会产生什么情况呢:

043f457f23e84d3b8b81884019cb47ef.png

 结果不是显示文本,而是将javascript代码做了运行,弹了提醒框。

对于上述的这个问题,只是在个人的页面上产生了问题,影响面还好。但是, 如果我们把问题升级一下,这个是发贴子、发微博或者发评论的操作,将内容提交到服务器,再被其他人浏览到,那就会导致所有的用户都会弹出提醒框。

77826d18667f4c89b17ee4466eb8f338.png

 我们的服务器端从数据库将用户提交的内容赋值到页面上,拼接成html字符串写回到浏览器。浏览器就将执行javascript代码。这个时候,如果这个内容是xss攻击脚本,那就会让所有的浏览者遭到攻击。

2、攻击的影响

刚刚我们的实验还只是弹一个框,是一个很轻的实验。但是,攻击者可以把问题复杂化

a、影响用户使用:只要稍微改一下提交的内容,就可以for循环或者setTimeout,来不断弹框,影响用户的正常使用;

b、偷走用户的信息:如果提交的内容改为类似

1a1af69774f848b2be0fb2da6a37d47e.png

 这样就比较轻松的把用户的cookie偷走,然后造成隐私丢失;

c、对第三方网站攻击:这个和我们上次的csrf进行结合,就可以给第三方网站造成大量的请求访问。

 

3、攻击的预防

对于XSS攻击最好的防范手段就是:转义!!! 对于用户提交的数据,在展示前,不管是客户端还是server端,只要有一个端做了转义,基本就能避免。比如:

7f2e6d1e06294d929547756413a540cb.png

 

我们在客户端代码中加入转义函数,就基本可以将脚本转义掉。对于server端代码都有类似的转义操作,比如jsp的struts框架标签默认都是带转义的,

<s:property value="xxx" escape="true"/>

所以,对于XSS漏洞的防范就是随时要绷紧心里那根弦,基本就能保证代码不犯大的问题。

 

好了,今天就聊到这里。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值