跨站脚本攻击

先来说说这个跨站脚本攻击是个什么东西,跨站脚本攻击(Cross site scripting),本来应该简写为CSS但是正好与CSS层叠样式表重名,所以说一般简写为XSS。XSS是一种客户端脚本攻击方式,还是利用网页程序对页面输入的数据过滤不严或未过滤的漏洞,来向web页面植入恶意脚本代码,用户在浏览这个页面的时候就会执行插入的恶意脚本代码。

   下面来说说三种类型的跨站脚本攻击

1. 反射型XSS,反射型XSS也被称为非持久性的XSS,反射型CSS一般是向用户发送一个恶意的带有攻击脚本的URL连接来诱骗用户去点击,当用户点击的时候就会执行里面的恶意脚本,好下面我用PHP先来实现一个简单的网页,PHP的代码如下图所示:

这是一个非常简单的网页,好了现在我们通过localhost来访问这个网页,因为我们没有想起传入参数,所以直接访问如下图:

但是如果我们用如下的方式来访问这个网页:
localhost/test/test.php?user=<script>alert(/这是一个xss反射型跨站脚本攻击/);</script>
其中里面的%3C和%3E是<>字符,这里就相当于用用户名来传输一段非法的代码,这段代码在360的浏览器上会被识别,在360浏览器上也不会被执行,在360浏览器网站源代码查看里面,被注入的这段代码,被标记为红色,但是在win10的Edge浏览器里面这段代码是被执行的,效果如下:

假设这是一个访问量较大的网站,攻击者就可以伪装这样的一段URL来诱骗用户点击,从而执行恶意脚本

2. 存储型XSS,存储型XSS为持久型跨站脚本攻击,存储型的意思就是攻击者将恶意数据非法存储在web服务器的页面中,当用户访问的时候,嵌入页面的恶意代码就会被执行,因为恶意脚本保存在服务器端,所以具有很强的稳定性,一般来说的方法就是攻击者将恶意数据嵌入到blog或论坛里面,然后发布到相应的web服务器,当其他用户查看对应的blog或帖子的话,里面的代码就会被恶意执行,与反射型XSS相比,存储型XSS攻击的危害性更大,原因在于存储型XSS实施攻击的过程不需要用户交互,反射型还得让用户点击那个链接,而且当前的浏览器比如上面说的360浏览器都对反射型XSS做了过滤支持,攻击者必需想办法来绕过浏览器的过滤规则,存储型XSS不会受到浏览器过滤规则的影响

3. DOM-based XSS,这个是基于文档对象模型DOM的跨站脚本攻击,攻击者通过jsp来动态修改DOM的结构,进而导致XSS漏洞,从效果上来说属于反射型XSS,因为他并没有改变web服务器返回的内容

4. 跨站脚本发攻击实质上是利用了用户浏览区可执行脚本的权限,XSS攻击完成之后,攻击者可以在客户端进行所有脚本可以实现的功能,比如进行用户登录cookie的劫持,还可以模拟GET和POST请求对浏览器执行非法的操作

5. XSS的防范,第一就是输入检查,检查用户的输入,还有就是将cookie进行httponly标识,带有httponly标识的cookie就不能被jsp来进行访问了,还有就是进行输出检查,从JavaScript到HTML要进行输出检查,可以使用JavascriptEncode编码函数来进行适当的编码

首发于我的个人网站: 点击打开链接

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ShaoqunLiu/article/details/52346375
上一篇网页挂马
下一篇跨站点请求伪造攻击
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭