fbpx
维基百科

跨網站指令碼

跨網站指令碼(英語:Cross-site scripting,通常簡稱為:XSS)是一種網站應用程式的安全漏洞攻擊,是代码注入的一种。它允許惡意使用者將程式碼注入到網頁上,其他使用者在觀看網頁時就會受到影響。這類攻擊通常包含了HTML以及使用者端腳本語言

「跨網站指令碼」的各地常用別名
中国大陸跨站脚本
港臺跨網站指令碼

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

背景和现状

網景(Netscape)最初推出JavaScript語言時,他們也察覺到准許網頁伺服器傳送可執行的程式碼給一個瀏覽器的安全風險(即使僅是在一個瀏覽器的沙盒裡)。它所造成的一個關鍵的問題在於使用者同時開啟多個瀏覽器視窗時,在某些例子裡,網頁裡的片斷程式碼被允許從另一個網頁或物件取出資料,而因為惡意的網站可以用這個方法來嘗試竊取機密資訊,所以在某些情形,這應是完全被禁止的。為了解決這個問題,瀏覽器採用了同源决策——僅允許來自相同網域名稱系統和使用相同協定的物件與網頁之間的任何互動。這樣一來,惡意的網站便無法藉由JavaScript在另一個瀏覽器竊取機密資料。此後,為了保護使用者免受惡意的危害,其他的瀏覽器與伺服端指令語言採用了類似的存取控制決策。

XSS漏洞可以追溯到1990年代。大量的网站曾遭受XSS漏洞攻击或被发现此类漏洞,如Twitter[1]Facebook[2]MySpaceOrkut[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://888.888.com/999.png" onerror="alert('XSS')">
  • <div style="height:expression(alert('XSS'),1)"></div>(這個僅於IE7或以前有效)

攻击手段和目的

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

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

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

漏洞的防御和利用

过滤特殊字符

避免XSS的方法之一主要是將使用者所提供的內容進行過濾,許多語言都有提供對HTML的過濾:

  • PHPhtmlentities()或是htmlspecialchars()
  • Pythoncgi.escape()
  • ASPServer.HTMLEncode()
  • ASP.NETServer.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 ExplorerMozilla Firefox在內的大多数瀏覽器皆有關閉JavaScript的选项,但關閉功能并非是最好的方法,因為許多網站都需要使用JavaScript語言才能正常运作。通常来说,一個經常有安全更新推出的瀏覽器,在使用上會比很久都没有更新的浏览器更为安全。

参阅

外部連結

  • CERT® Advisory CA-2000-02 Malicious HTML Tags Embedded in Client Web Requests (页面存档备份,存于互联网档案馆(英文)
  • Cross Site Scripting Info (页面存档备份,存于互联网档案馆(英文)
  • The Same Origin Policy (页面存档备份,存于互联网档案馆(英文)
  • (英文)

脚注

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

跨網站指令碼, 英語, cross, site, scripting, 通常簡稱為, 是一種網站應用程式的安全漏洞攻擊, 是代码注入的一种, 它允許惡意使用者將程式碼注入到網頁上, 其他使用者在觀看網頁時就會受到影響, 這類攻擊通常包含了html以及使用者端腳本語言, 的各地常用別名中国大陸跨站脚本港臺此條目可参照英語維基百科相應條目来扩充, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可靠, 低品质内容, 依版权协议, 译文需在编辑摘要注明来源, 或于讨论页顶部. 跨網站指令碼 英語 Cross site scripting 通常簡稱為 XSS 是一種網站應用程式的安全漏洞攻擊 是代码注入的一种 它允許惡意使用者將程式碼注入到網頁上 其他使用者在觀看網頁時就會受到影響 這類攻擊通常包含了HTML以及使用者端腳本語言 跨網站指令碼 的各地常用別名中国大陸跨站脚本港臺跨網站指令碼此條目可参照英語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 XSS攻击通常指的是通过利用网页开发时留下的漏洞 通过巧妙的方法注入恶意指令代码到网页 使用户加载并执行攻击者恶意制造的网页程序 这些恶意网页程序通常是JavaScript 但实际上也可以包括Java VBScript ActiveX Flash或者甚至是普通的HTML 攻击成功后 攻击者可能得到更高的权限 如执行一些操作 私密网页内容 会话和cookie等各种内容 目录 1 背景和现状 2 縮寫 3 检测方法 4 攻击手段和目的 5 漏洞的防御和利用 5 1 过滤特殊字符 5 2 使用HTTP头指定类型 5 3 使用者方面 6 参阅 7 外部連結 7 1 脚注背景和现状 编辑當網景 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 检测方法 编辑通常有一些方式可以測試網站是否有正確處理特殊字元 gt lt script gt alert document cookie lt script gt gt lt script gt alert document cookie lt script gt gt lt script gt alert document cookie lt script gt lt script gt alert document cookie lt script gt lt script gt alert vulnerable lt script gt 3Cscript 3Ealert XSS 3C script 3E lt script gt alert XSS lt script gt lt img src javascript alert XSS gt lt img src http 888 888 com 999 png onerror alert XSS gt lt div style height expression alert XSS 1 gt lt div gt 這個僅於IE7或以前有效 攻击手段和目的 编辑攻击者使被攻击者在浏览器中执行脚本后 如果需要收集来自被攻击者的数据 如cookie或其他敏感信息 可以自行架设一个网站 让被攻击者通过JavaScript等方式把收集好的数据作为参数提交 随后以数据库等形式记录在攻击者自己的服务器上 常用的XSS攻击手段和目的有 盗用cookie 获取敏感信息 利用植入Flash 通过crossdomain权限设置进一步获取更高权限 或者利用Java等得到类似的操作 利用iframe frame XMLHttpRequest或上述Flash等方式 以 被攻击 用户的身份执行一些管理动作 或执行一些一般的如发微博 加好友 发私信等操作 利用可被攻击的域受到其他域信任的特点 以受信任来源的身份请求一些平时不允许的操作 如进行不当的投票活动 在访问量极大的一些页面上的XSS可以攻击一些小型网站 实现DoS攻击的效果 漏洞的防御和利用 编辑过滤特殊字符 编辑 避免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语言中使用以下代码 lt php header Content Type text javascript charset utf 8 gt 即可强行指定输出内容为文本 JavaScript脚本 顺便指定了内容编码 而非可以引发攻击的HTML 使用者方面 编辑 包括Internet Explorer Mozilla Firefox在內的大多数瀏覽器皆有關閉JavaScript的选项 但關閉功能并非是最好的方法 因為許多網站都需要使用JavaScript語言才能正常运作 通常来说 一個經常有安全更新推出的瀏覽器 在使用上會比很久都没有更新的浏览器更为安全 参阅 编辑苍月浏览器 过滤跨網站指令碼 XSS 的网络浏览器 SGML实体 Metasploit 一个包含XSS测试的开源渗透测试工具外部連結 编辑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 英文 脚注 编辑 Arthur Charles Twitter users including Sarah Brown hit by malicious hacker attack The Guardian September 21 2010 September 21 2010 原始内容存档于2011 01 20 Leyden John Facebook poked by XSS flaw The Register May 23 2008 May 28 2008 原始内容存档于2011 10 11 Full List of Incidents Web Application Security Consortium February 17 2008 May 28 2008 原始内容存档于2010 10 21 Obama site hacked Redirected to Hillary Clinton ZDNet April 21 2008 May 28 2008 原始内容存档于2014 03 27 新浪微博病毒事件分析 SOHU 2011 06 28 2011 10 18 原始内容存档于2011 09 05 Berinato Scott Software Vulnerability Disclosure The Chilling Effect CSO CXO Media January 1 2007 7 June 7 2008 原始内容存档于2008 04 18 OWASP Top 10 2010 Document PDF OWASP April 19 2010 Jan 2 2013 原始内容 PDF 存档于2012年12月4日 取自 https zh wikipedia org w index php title 跨網站指令碼 amp oldid 74585035, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。