网络安全 频道

解析跨站脚本攻击与跨站请求伪造之道

  【IT168 技术】这里谈到的跨站漏洞利用包括跨站脚本攻击、跨站请求伪造以及其它的同源攻击,这些攻击都是目前极普遍的攻击方式。这篇文章可供Web开发人员阅览,也可供网站管理员参考。

  同源策略最初是随着网景公司的浏览器发布的,它的主要作用是规定浏览器和相关的编程语言应当如何处理安全问题。这种策略的主旨在于限制一个网站访问其它网站上的函数,同时又允许网站自由地控制URI上的代码源。换句话说,仅准许脚本能够处理同一域名上的其它脚本、80端口和协议。

跨站脚本攻击

  同源攻击主要涉及几种攻击方式:跨站脚本攻击、跨站请求伪造、跨站请求跟踪、网站缓存投毒、HTTP响应Splitting、HTTP请求Smuggling、HTML和JavaScript网络扫描。

  跨站脚本攻击

  跨站脚本攻击是一种准许将恶意代码注入到网页中的安全漏洞。这种攻击主要用于:

  A、钓鱼或者cookie窃取,目的是为了访问受限信息。

  B、为了恶搞、丑化其它网站或实施社交工程攻击

  C、在网站的客户端上执行恶意代码

  这种攻击可以通过利用IMG标记来实施破坏或恶搞,如关闭用户浏览器的窗口,然后打开一个既无菜单也无工具栏的窗口,并播放一些恶搞性的声音。

  1、攻击原理及类型

  那么,这种攻击是如何进行的呢?总体说来,它分为两种类型:其一是反射式攻击,这种攻击跟踪网站通过cookies进行的身份验证,这种网站一般都不太安全,容易遭受跨站脚本攻击。使用社会工程(如告诉用户“你中奖了!”),如果目标用户受到诱骗,并单击攻击者注入到标准HTML代码中的包含恶意代码的链接,攻击者就可以访问用户的cookie信息(会话和身份验证信息等)。其二是存储式攻击,其原理是:假设某个网站利用后端数据库作为搜索网页的信息源,黑客们并不将恶意代码注入到普通页面中,而是将SQL代码注入到这种数据库中。于是,每次从后端数据库中返回查询结果时,都会包含着攻击者的恶意代码。可以想像,这种攻击并不是针对哪个客户端,而是感染整个论坛的用户组,并感染大量的容易轻信的受害者。

  2、防范措施最重要的是要保护代码。

  你应当限制用户输入信息的显示,实施过滤,仅显示绝对需要的信息。建议你验证并清理所有形式的数据、数据源,以及你无法直接控制的URL参数。

  一个很实用的技巧是用HTML实体(如&)来代替特别字符。为了减少特定HTML字符的数量,你必须限制用户输入,仅准许用于网站的合法代码段。例如,许多论坛通过运用{b}标记让用户输入大写字符,但是典型情况下,这些站点并不准许你增添加自己的表单,所以不应当准许表单。此外,如果这些标记有特定的语法和值,那么你应当仅准许与其语法保持一致的值(例如,字体颜色是一个仅包含字母A-F或数字0-9的三个或六个字符的值,所以,如果你准许用户输入整个SQL语句,那么事情就糟了。)

  此外,多数清理例程会用

  标记来替换回车符和换行符,以及一些有害的单词,如“script”,这虽然依赖于具体的应用程序,但是许多网站有理由使用这种单词,所以这些措施很难普及。

  下面给出几个不安全的例子:

  Python的例子:
   print "<script>alert('xss');</script>"
  ASP的例子:
   <%= "<script>alert('xss');</script>" %>
  将这种文本直接写到HTML中会导致:
   <script>alert('xss');</script>
  这里你可以看到的是合法的HTML,所以会得到处理:
  下面给出几个较安全的例子:
  Python:
   print cgi.escape("<script>alert('xss');</script>")
  ASP:
   <%= HTMLEncode(“<script>alert('xss');</script>”) %>

0
相关文章