xss攻击

来源:互联网 发布:数据库管理系统DBMSS 编辑:程序博客网 时间:2024/05/29 16:01

XSS又称CSS,全称Cross SiteScript,跨站脚本攻击,是Web程序中常见的漏洞

  1. DOM Based XSS
    DOM Based XSS是一种基于网页DOM结构的攻击。
    方式:用户请求一个经过专门设计的URL,它由攻击者提交,且其中包含嵌入式JavaScript。服务器的响应中并不以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,上述脚本得以处理

  2. Stored XSS
    存储型XSS,又称持久型XSS,攻击脚本被永久地存放在目标服务器的数据库和文件中,所以受害人更多。
    方式:这种攻击多见于论坛或博客,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入到帖子的内容之中。随着帖子被服务器存储下来,恶意脚本也永久地被存放在服务器的后端存储器中。当其它用户浏览这个被注入了恶意脚本的帖子的时候,恶意脚本则会在他们的浏览器中得到执行,从而受到了攻击

  3. 反射型XSS
    反射型XSS,又称非持久型XSS。(一般需要自行去触发,输入—输出)
    反射:这种攻击方式的注入代码是从目标服务器通过错误信息、搜索结果等等方式“反射”回来的。
    非持久性:这种攻击方式往往具有一次性。
    方式:
    攻击者通过电子邮件等方式将包含注入脚本的恶意链接发送给受害者,当受害者点击该链接时,注入脚本被传输到目标服务器上,然后服务器将注入脚本“反射”到受害者的浏览器上,从而在该浏览器上执行了这段脚本。
    Eg:
    攻击者将如下链接发送给受害者:
    代码:
    http://www.XXXX.com/search.asp?input=<script>alert(document.cookie);</script>
    当受害者点击这个链接的时候,注入的脚本被当作搜索的关键词发送到目标服务器的search.asp页面中,则在搜索结果的返回页面中,这段脚本将被当作搜索的关键词而嵌入。这样,当用户得到搜索结果页面后,这段脚本也得到了执行。这就是反射型XSS攻击的原理,可以看到,攻击者巧妙地通过反射型XSS的攻击方式,达到了在受害者的浏览器上执行脚本的目的。由于代码注入的是一个动态产生的页面而不是永久的页面,因此这种攻击方式只在点击链接的时候才产生作用,这也是它被称为非持久型XSS的原因。
  4. XSS防御

    • 完善的过滤体系
      永远不相信用户的输入。需要对用户的输入进行处理,只允许输入合法的值,其它值一概过滤掉。

    • Html encode
      假如某些情况下,我们不能对用户数据进行严格的过滤,那我们也需要对标签进行转换。

    • 使用Apache的commons-lang.jar
      StringEscapeUtils.escapeHtml(str);// 汉字会转换成对应的ASCII码,空格不转换
0 0