跨站腳本-xss

跨站腳本[編輯]

維基百科,自由的百科全書javascript

中國大陸 跨站腳本
港臺 跨網站指令碼

link =

本條目可參照英語維基百科的相應條目來擴充。 
若您熟悉來源語言和主題,請協助參考外語維基擴充條目。請勿直接粘貼機械翻譯結果,也不要翻譯不可靠或低品質內容。
版權協議,譯文需在在編輯摘要註明來源,或於討論頁頂部標記{{Translated page|en|Cross-site scripting}}

跨站腳本Cross-site scripting,一般簡稱爲XSS)是一種網站應用程序的安全漏洞攻擊,是代碼注入的一種。它容許惡意用戶將代碼注入到網頁上,其餘用戶在觀看網頁時就會受到影響。這類攻擊一般包含了HTML以及用戶端腳本語言php

XSS攻擊一般指的是經過利用網頁開發時留下的漏洞,經過巧妙的方法注入惡意指令代碼到網頁,使用戶加載並執行攻擊者惡意製造的網頁程序。這些惡意網頁程序一般是JavaScript,但實際上也能夠包括JavaVBScriptActiveXFlash或者甚至是普通的HTML。攻擊成功後,攻擊者可能獲得更高的權限(如執行一些操做)、私密網頁內容、會話cookie等各類內容。css

 

目錄

  [隱藏html

 

背景和現狀[編輯]

網景(Netscape)最初推出JavaScript語言時,他們也察覺到准許網頁服務器發送可運行的代碼給一個瀏覽器的安全風險(即便僅是在一個瀏覽器的沙盒裏)。它所形成的一個關鍵的問題在於用戶同時打開多個瀏覽器視窗時,在某些例子裏,網頁裏的片段代碼被容許從另外一個網頁或對象取出數據,而由於惡意的網站能夠用這個方法來嘗試竊取機密信息,因此在某些情形,這應是徹底被禁止的。爲了解決這個問題,瀏覽器採用了同源決策——僅容許來自相同域名系統和使用相同協議的對象與網頁之間的任何交互。這樣一來,惡意的網站便沒法藉由JavaScript在另外一個瀏覽器竊取機密數據。此後,爲了保護用戶免受惡意的危害,其餘的瀏覽器與服務端指令語言採用了相似的訪問控制決策。java

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]node

縮寫[編輯]

Cross-site scripting的英文首字母縮寫本應爲CSS,但由於CSS網頁設計領域已經被普遍指層疊樣式表(Cascading Style Sheets),因此將Cross改以發音相近的X作爲縮寫。但早期的文件仍是會使用CSS表示Cross-site scripting。web

檢測方法[編輯]

一般有一些方式能夠測試網站是否有正確處理特殊字符:數據庫

  • ><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等方式把收集好的數據做爲參數提交,隨後以數據庫等形式記錄在攻擊者本身的服務器上。apache

經常使用的XSS攻擊手段和目的有:瀏覽器

  • 盜用cookie,獲取敏感信息。
  • 利用植入Flash,經過crossdomain權限設置進一步獲取更高權限;或者利用Java等獲得相似的操做。
  • 利用iframe、frame、XMLHttpRequest或上述Flash等方式,以(被攻擊)用戶的身份執行一些管理動做,或執行一些通常的如發微博、加好友、發私信等操做。
  • 利用可被攻擊的域受到其餘域信任的特色,以受信任來源的身份請求一些平時不容許的操做,如進行不當的投票活動。
  • 在訪問量極大的一些頁面上的XSS能夠攻擊一些小型網站,實現DDoS攻擊的效果。

漏洞的防護和利用[編輯]

過濾特殊字符[編輯]

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

使用HTTP頭指定類型[編輯]

不少時候可使用HTTP頭指定內容的類型,使得輸出的內容避免被做爲HTML解析。如在PHP語言中使用如下代碼:

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

便可強行指定輸出內容爲文本/JavaScript腳本(順便指定了內容編碼),而非能夠引起攻擊的HTML。

用戶方面[編輯]

包括Internet ExplorerMozilla Firefox在內的大多數瀏覽器皆有關閉JavaScript的選項,但關閉功能並不是是最好的方法,由於許多網站都須要使用JavaScript語言才能正常運做。一般來講,一個常常有安全更新推出的瀏覽器,在使用上會比好久都沒有更新的瀏覽器更爲安全。

外部連接[編輯]

腳註[編輯]

  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].
相關文章
相關標籤/搜索