什麼是跨網站指令碼(XSS)

網頁應用程式把使用者的輸入直接輸出到HTML中,導致輸入所含的指令碼以該網站網頁的身分在瀏覽者的瀏覽器中執行的漏洞。輸出時跳脫具有特殊意義的字元是根本的對策。

日文名稱: クロスサイトスクリプティング(XSS)

「跨網站指令碼(XSS)」出現在2領域的4道練習題中(Web技術基礎, 資訊安全基礎等)。

這個名詞所屬的領域: 資訊安全基礎

練習跨網站指令碼(XSS)的題目

瀏覽器的localStorage與Cookie的差異,下列何者正確?

  1. AlocalStorage的資料不會自動附加到請求,而是由同源網頁的JavaScript讀寫使用
  2. BlocalStorage的資料也與Cookie一樣,每次向同一網站送出請求時都會放進標頭,自動送往伺服器
  3. ClocalStorage也能加上HttpOnly屬性,因此即使放入工作階段ID,網頁的指令碼也無法讀取
查看答案與解析

正確答案:A. localStorage的資料不會自動附加到請求,而是由同源網頁的JavaScript讀寫使用

localStorage是依來源保存字串鍵與值的瀏覽器儲存區,沒有設定有效期限的機制,一般會一直保留到刪除為止。它不會自動送往伺服器,想傳送時要以JavaScript放進請求中。Cookie每個一般最多約4 KB,容量小,而且每次請求都會自動傳送;相對地,localStorage可以放較大的資料。不過網頁的JavaScript隨時都能讀取,因此若有XSS,內容就會被竊取。放入用於驗證的值時,必須考慮這個風險。

某留言板網頁應用程式有一個漏洞:使用者張貼的文章中所含的指令碼,會在其他瀏覽者的瀏覽器中執行。此漏洞的名稱與根本對策的組合,正確的是哪一項?

  1. ASQL隱碼攻擊。加長連接資料庫所用的密碼
  2. B跨網站指令碼(XSS)。把張貼的文章以HTML輸出時,跳脫 < 與 > 等具有特殊意義的字元
  3. C跨網站指令碼(XSS)。以HTTPS加密伺服器與瀏覽器之間的通訊
查看答案與解析

正確答案:B. 跨網站指令碼(XSS)。把張貼的文章以HTML輸出時,跳脫 < 與 > 等具有特殊意義的字元

跨網站指令碼(XSS)是網頁應用程式把使用者的輸入直接輸出到HTML中,導致輸入所含的指令碼作為網頁的一部分,在瀏覽者的瀏覽器中執行的漏洞。指令碼是以該網站的網頁身分執行,因此可能竊取瀏覽者的工作階段資訊(Cookie),或顯示假的輸入欄位。根本的對策是依輸出的位置,把 <、>、& 與引號等具有特殊意義的字元跳脫(例如把 < 轉換為 &lt;),使其只顯示為一般字元。輔助的對策包括為Cookie加上HttpOnly屬性使指令碼無法讀取,以及以內容安全性原則限制可執行的指令碼。HTTPS保護的是通訊路徑,無法防止嵌入合法網頁中的指令碼執行。

解析中的「跨網站指令碼(XSS)」

出現「跨網站指令碼(XSS)」的題目(4題)

  1. 關於以上方標頭設定的Cookie,下列說明何者正確?
  2. 瀏覽器的localStorage與Cookie的差異,下列何者正確?
  3. 某留言板網頁應用程式有一個漏洞:使用者張貼的文章中所含的指令碼,會在其他瀏覽者的瀏覽器中執行。此漏洞的名稱與根本對策的組合,正確的是哪一項?
  4. 某網頁應用程式有一個漏洞:保持登入狀態的使用者若開啟攻擊者準備的陷阱網頁,使用者的瀏覽器就會向正規網站送出使用者並未意圖的匯款或設定變更請求。下列何者是適當的對策?

相關名詞

Cookie 公開金鑰加密 多因素驗證 社交工程 訊息鑑別碼 勒索軟體 最小權限原則 零時差攻擊 對稱式加密 網路釣魚

前往名詞解釋列表