跨网站脚本

维基百科,自由的百科全书
跳转至: 导航、 搜索

跨网站脚本Cross-site scripting,通常简称为XSS跨站脚本跨站脚本攻击)是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。

XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。这些恶意网页程序通常是JavaScript,但实际上也可以包括Java,VBScript,ActiveX,Flash或者甚至是普通的HTML。攻击成功后,攻击者可能得到更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。

  • 跨网站脚本

    • 目录
    • 背景和现状编辑
    • 缩写编辑
    • 检测方法编辑
    • 攻击手段和目的编辑
    • 漏洞的防御和利用编辑
      • 过滤特殊字符编辑
      • 使用HTTP头指定类型编辑
      • 用户方面编辑
    • 外部链接编辑
      • 脚注编辑

背景和现状[编辑]

当网景(Netscape)最初推出JavaScript语言时,他们也察觉到准许网页服务器发送可运行的代码给一个浏览器的安全风险(即使仅是在一个浏览器的沙盒里)。它所造成的一个关键的问题在于用户同时打开多个浏览器视窗时,在某些例子里,网页里的片断代码被允许从另一个网页或对象取出数据,而因为恶意的网站可以用这个方法来尝试窃取机密信息,所以在某些情形,这应是完全被禁止的。为了解决这个问题,浏览器采用了同源决策——仅允许来自相同域名系统和使用相同协议的对象与网页之间的任何交互。这样一来,恶意的网站便无法借由JavaScript在另一个浏览器窃取机密数据。此后,为了保护用户免受恶意的危害,其他的浏览器与服务端指令语言采用了类似的访问控制决策。

XSS漏洞可以追溯到1990年代。大量的网站曾遭受XSS漏洞攻击或被发现此类漏洞,如Twitter[1],Facebook[2],MySpace,Orkut[3][4] ,新浪微博[5]和百度贴吧 。研究表明[6],最近几年XSS已经超过缓冲区溢出成为最流行的攻击方式,有68%的网站可能遭受此类攻击。根据开放网页应用安全计划(Open Web Application Security Project)公布的2010年统计数据,在Web安全威胁前10位中,XSS排名第2,仅次于代码注入(Injection)。[7]

缩写[编辑]

Cross-site scripting的缩写是CSS,但因为CSS在网页设计领域已经被广泛指层叠样式表(Cascading Style Sheets),所以将Cross改以发音相近的X做为缩写。但早期的文件还是会使用CSS表示Cross-site scripting。

检测方法[编辑]

通常有一些方式可以测试网站是否有正确处理特殊字元:

  • ><script>alert(document.cookie)</script>
  • ='><script>alert(document.cookie)</script>
  • "><script>alert(document.cookie)</script>
  • <script>alert(document.cookie)</script>
  • <script>alert (vulnerable)</script>
  • %3Cscript%3Ealert('XSS')%3C/script%3E
  • <script>alert('XSS')</script>
  • <img src="javascript:alert('XSS')">
  • <img src="http://xxx.com/yyy.png" onerror="alert('XSS')">
  • (这个仅限IE有效)

攻击手段和目的[编辑]

攻击者使被攻击者在浏览器中执行脚本后,如果需要收集来自被攻击者的数据(如cookie或其他敏感信息),可以自行架设一个网站,让被攻击者通过JavaScript等方式把收集好的数据作为参数提交,随后以数据库等形式记录在攻击者自己的服务器上。

常用的XSS攻击手段和目的有:

  • 盗用cookie,获取敏感信息。
  • 利用植入Flash,通过crossdomain权限设置进一步获取更高权限;或者利用Java等得到类似的操作。
  • 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻击)用户的身份执行一些管理动作,或执行一些一般的如发微博、加好友、发私信等操作。
  • 利用可被攻击的域受到其他域信任的特点,以受信任来源的身份请求一些平时不允许的操作,如进行不当的投票活动。
  • 在访问量极大的一些页面上的XSS可以攻击一些小型网站,实现DDoS攻击的效果。

漏洞的防御和利用[编辑]

过滤特殊字符[编辑]

避免XSS的方法之一主要是将用户所提供的内容进行过滤,许多语言都有提供对HTML的过滤:

  • PHP的htmlentities()或是htmlspecialchars()
  • Python的cgi.escape()
  • ASP的Server.HTMLEncode()
  • ASP.NET的Server.HtmlEncode()或功能更强的Microsoft Anti-Cross Site Scripting Library
  • Java的xssprotect (Open Source Library)。
  • Node.js的node-validator。

使用HTTP头指定类型[编辑]

很多时候可以使用HTTP头指定内容的类型,使得输出的内容避免被作为HTML解析。如在PHP语言中使用以下代码:

<?php
header('Content-Type: text/javascript; charset=utf-8');
?>

即可强行指定输出内容为文本/JavaScript脚本(顺便指定了内容编码),而非可以引发攻击的HTML。

用户方面[编辑]

包括Internet Explorer、Mozilla Firefox在内的大多数浏览器皆有关闭JavaScript的选项,但关闭功能并非是最好的方法,因为许多网站都需要使用JavaScript语言才能正常运作。通常来说,一个经常有安全更新推出的浏览器,在使用上会比很久都没有更新的浏览器更为安全。

外部链接[编辑]

  • CERT® Advisory CA-2000-02 Malicious HTML Tags Embedded in Client Web Requests (英文)
  • Cross Site Scripting Info (英文)
  • The Same Origin Policy (英文)
  • XSS (Cross Site Scripting) Cheat Sheet (英文)

脚注[编辑]

  1. ^ Arthur, Charles. Twitter users including Sarah Brown hit by malicious hacker attack. The Guardian. September 21, 2010 [September 21, 2010].
  2. ^ Leyden, John. Facebook poked by XSS flaw. The Register. May 23, 2008 [May 28, 2008].
  3. ^ Full List of Incidents. Web Application Security Consortium. February 17, 2008 [May 28, 2008].
  4. ^ Obama site hacked; Redirected to Hillary Clinton. ZDNet. April 21, 2008 [May 28, 2008].
  5. ^ 新浪微博病毒事件分析. SOHU. 2011-06-28.
  6. ^ Berinato, Scott. Software Vulnerability Disclosure: The Chilling Effect. CSO (CXO Media). January 1, 2007: 7 [June 7, 2008]. (原始内容存档于2008-04-18).
  7. ^ OWASP Top 10 - 2010 Document (PDF). OWASP. April 19, 2010 [Jan 2, 2013].

WEB安全的防御--介绍XSS跨网站脚本[wiki]相关推荐

  1. 跨网站脚本攻击(XSS)的原理与防范对策

    摘要:随着计算机网络技术的迅速发展,网络安全问题已变得越来越受到人们的重视,网络攻击形式多种多样,很多蠕虫病毒.木马病毒等植入到某些网页中,给网络用户带来了很大的安全隐患.其中XSS跨网站脚本攻击,恶 ...

  2. 浅谈跨网站脚本攻击(XSS)的手段与防范(简析新浪微博XSS攻击事件)

    本文主要涉及内容: 什么是XSS XSS攻击手段和目的 XSS的防范 新浪微博攻击事件 什么是XSS 跨网站脚本(Cross-sitescripting,通常简称为XSS或跨站脚本或跨站脚本攻击)是一 ...

  3. 搭建XSS (跨网站指令码) 测试平台

    跨网站指令码(英语:Cross-site scripting,通常简称为:XSS)是一种网站应用程式的安全漏洞攻击,是代码注入的一种.它允许恶意使用者将程式码注入到网页上,其他使用者在观看网页时就会受 ...

  4. 如何尽量规避XSS(跨站点脚本)攻击

    2019独角兽企业重金招聘Python工程师标准>>> 跨站攻击,即Cross Site Script Execution(通常简写为XSS,因为CSS与层叠样式表同名,故改为XSS ...

  5. xxs漏洞危害_PHP开发中经常遇到的Web安全漏洞防御详解

    程序员需要掌握基本的web安全知识,防患于未然,你们知道有多少种web安全漏洞吗?这里不妨列举10项吧,你们可以自己去网站找相应的教程来提升自己的1.命令注入(Command Injection)2. ...

  6. 跨站点脚本 (XSS)

    跨站点脚本 (XSS) 跨站点脚本 (XSS) 是客户端代码注入攻击.攻击者旨在通过在合法的网页或 Web 应用程序中包含恶意代码,在受害者的 Web 浏览器中执行恶意脚本.当受害者访问执行恶意代码的 ...

  7. xss跨站攻击html转义,前端攻击和防御(一)XSS跨站脚本攻击

    (一)XSS跨站脚本攻击 (1)XSS简介 XSS攻击全称跨站脚本攻击(Cross Site Scripting),是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混 ...

  8. Web漏洞-Xss跨站

    25.Xss跨站之原理分类及攻击方法 原理 XSS 跨站漏洞产生原理,危害,特点? 本质,产生层面,函数类,漏洞操作对应层,危害影响,浏览器内核版本等 本质 跨站脚本攻击是指攻击者往Web页面里插入恶 ...

  9. 通过Web安全工具Burp suite找出网站中的XSS漏洞实战(二) 1

    一.背景 笔者6月份在慕课网录制视频教程XSS跨站漏洞 加强Web安全,里面需要讲到很多实战案例,在漏洞挖掘案例中分为了手工挖掘.工具挖掘.代码审计三部分内容,手工挖掘篇参考地址为快速找出网站中可能存 ...

最新文章

  1. java 声明静态类_java静态类声明--java类可以声明为static吗
  2. 集合对象的数据绑定(1)
  3. ATT汇编leave指令
  4. Git 中的对象模型和文件的详细视图 —— Git 学习笔记 13
  5. Apache Kafka 1.0.0正式发布!
  6. wamp替换mysql_将wamp集成的mysql替换成安装版的
  7. Latex的表格注释
  8. oracle工程师考试题,信息安全工程师考试练习试题及答案(三)
  9. Spring Framework 4.0相关计划公布---包括对于Java SE 8 和Groovy2的支持
  10. 专科学校计算机是必修课吗,高等专科学校公共计算机选修课的开展与探索
  11. SSRF漏洞理解进阶SSRF+gopher打内网(redis、mysql、fastcgi) SSRF相关基础概念
  12. Spring框架总结(8)
  13. Linux 管道通信
  14. 基于沙猫群优化算法的函数寻优算法
  15. Python画五角星(turtle初识)
  16. A pseudo attribute name is expected.解决方法
  17. openwrt移植到pb44---第一章(使用chaos_calmer)
  18. flutter菜鸟教程!mysql半同步的主从搭建方式
  19. cheer ,on the way to linux
  20. 西安国际港务区铁路集装箱中心站正式开通 两个“中心”构建国际陆港平台...

热门文章

  1. MATLAB代码:基于主从博弈理论的共享储能与综合能源微网优化运行研究
  2. Ole Automation Procedures
  3. html文本框禁止汉字,html 文本框屏蔽非法字符
  4. mongodb的java驱动_Java访问MongoDB:安装驱动
  5. 2440init.s完全解析
  6. 打PSU补丁CRS没有起来
  7. 读书:《如何想到又做到》
  8. JS Websocket 常用代码
  9. [应用漏洞]KindEditor<=4.1.5 文件上传漏洞利用
  10. Ubuntu设置代理服务器