3个月前 (07-29)  网站建设 |   抢沙发  6 
文章评分 4 次,平均分 5.0

一、什么是XSS漏洞?

名词解释就是:cross sitescript跨站脚本攻击,是客户端脚本文件中的防御重点,也是攻击重点。

二、XSS有哪些类型?

反射型:把用户输入的数据反射给浏览器,这个数据可能是Html代码或者js代码,反射后让浏览器去执行。

存储型:把用户输入的数据(比如恶意的js代码)存储在服务器端,具有很强的稳定性,危害时间长。
DOM Based XSS:这种不是按照存储在哪里来划分的,可以说是反射型,由于历史原因,归为一类,通过改变DOM结构形成的XSS称之为DOM Based。

博主解密黑帽如何发现网站XSS漏洞,如何找XSS漏洞(一)

三、XSS的危害有哪些?

1、劫持Cookie,cookie中一般加密保存了用户的登录凭证,浏览器发起的所有请求都会自动带上,如果Cookie被盗取,也就是说用户不用通过密码而直接登录你的账户。
Cookie设置HttpOnly属性,能够起到四两拨千金的作用,另外cookie可以绑定用户客户端信息,例如ip或者umid信息。

2、构建Get和Post请求,如果cookie按照上述进行了设置,则无法直接劫持cookie来使用了,但是XSS可以在javascript中构建get或者post请求,来实现自己的攻击。

例如下面的一段代码:

var img =document.createElement(‘img’);

img.src=”http://blog.cccc.com?m=delete&id=212112”;

document.body.appendChild(img);

只要让用户执行这段脚本,就能发起get请求,攻击者通过XSS诱导用户来执行。
XSS的攻击过程都是在浏览器通过执行javascript脚本自动进行,缺少与用户交互的过程。例如在POST的请求中,如果需要输入验证码,Js代码无法解析验证码,攻击也就无法实现。但是针对验证码这种情况,如果XSS可以通过把验证码的图片发到远端攻击服务器,服务器解析验证码然后把结果返回给js代码,js获取后继续进行攻击,不过就是成本有点高。

3、XSS钓鱼
上面模拟用户的POST请求貌似成本有点高,攻击者可以将XSS和钓鱼结合在一起,例如通过javascript代码模拟出网站的登录框,用户输入用户名和密码后,XSS将这些信息发送到服务器端,用来进行攻击。

4、获取用户系统信息
此外XSS还可以识别用户的浏览器信息、用户安装的软件以及用户真实的IP等信息。

5、XSS Wrom
这是XSS的一种终极利用方式,破坏力和影响力是巨大的,一般来说,用户直接发生交互行为的页面,如果存在存储型XSS,则比较容易发起Wrom攻击。

四、如何防御XSS呢?

1、给关键的Cookie设置HttpOnly属性
这样能够避免js读取Cookie信息(设置后有助于缓解XSS,但是XSS除了劫持Cookie之外,还可以模拟用户的身份进行操作)。

2、进行输入检查
如果仅仅在客户端通过JS来做输入校验,有可能会被攻击者绕过,WEB开发中的普遍做法是同时在客户端和服务端做校验。这种输入检查的方式也称之为XSS Filter。

3、输出检查
一般说来,除了富文本输出之外,在变量输出到HTML页面时,可以使用编码或者转义的方式来防御XSS攻击。

4、防御DOM BasedXSS
前面提到的集中方法,对于这种类型不太适用,需要特别对待,那如何才能防御呢?
首先是$var输出到<script>是,应该执行一次javasriptEncode,其次在doument.write输出到HTML页面时,如果是输出到事件或者脚本,可以再做一次javaScriptEncode,如果是输出到HTML内容或者属性,则可以做一次HtmlEncode。

上面提到的这些防御方法都属于安全生产的环节,也就是说实在开发同学写代码的时候要特别注意,这种是否做的规范,可以通过工具扫描代码的方式来实现,也就是白盒测试,如果代码没有做输入或者输出检查,则发报告提示开发来进行修改。但是有些场景白盒没法覆盖到,例如输出jsonp类型的接口,对于callback参数的原味输出,白盒有时候就扫不出来,这时候,可以通过黑盒测试工具,模拟入参的各种情况,也就是穷举,来构造,如果发生了XSS请求,则发出报告即可。

 

除特别注明外,本站所有文章均为叶荣添原创,转载请注明出处来自https://www.wzxiaolou.com/342.html

关于

发表评论

表情 格式

暂无评论

切换注册

登录

忘记密码 ?

切换登录

注册

您是第 2214 位访客, 您的IP是:[35.168.62.171]