close

前言

在一個大網路時代,人人都會用可以連網的工具做自己想要的事,例如用手機看YT或是玩遊戲,有人也會用網路透過IoT去監控網路或是去控制設備等。不管在設備上做了什麼事,只要連上網就有可能曝露你的個資、行為在網路上。今天來介紹XSS攻擊的手法

XSS攻擊

XSS(Cross-Site Scripting)是利用網頁應用程式的漏洞攻擊,網頁工程師在開發過程中,沒有注意使用者輸入的字串,導致被駭客注入惡意代碼,一般是注入可以竊取可以身份識別的資料,例如cookies。其目的竊取特定敏感資料,或是DDoS攻擊

XSS攻擊有三種:

  • reflected XSS 反射型XSS:通常把代碼寫在可以即時互動的地方,例如寫在按鈕,使用者誤點,資料會以GET的方式傳出到惡意的網頁上,此攻擊需要會社交工程。
  • DOM XSS:這和反射型XSS一樣,需要會社交工程,但代碼會寫在DOM上,在把DOM嵌入在可以即時互動的地方。
  • store XSS 儲存型XSS:通常會發生在可以留言的網頁,一般是Blog,駭客在這下代碼,使用者一旦連到該網頁就會觸發此攻擊。

DOM XSS和兩種XSS的區別,DOM XSS攻擊中,提取和執行惡意程式是在Browser端完成,屬於前端JavaScript的漏洞,後者為在server上沒有做字元轉換而產生的安全問題

防範XSS

  • 做好欄位輸入的驗證與檢查,不論是前後端都應假設輸入是惡意且不可信任的,例如:URL、檔案上傳、表單欄位、留言板等。
  • 文法與語意:應確認每個網頁表單輸入欄位是否為合理的資料類型與內容,例如:年齡的欄位在文法上應只接受0–9的數字,而語意上應確認此數字介於 0–120。
  • 像上述所說明的任何輸入和其他難以定義文法的自由格式,都應該要經過編碼成為純字符串來處理,防止內容被當作程式碼執行,許多程式框架都有提供內建的編碼函式庫,可以依自己的慣用語言程式查找並多加利用。
  • 絕對不要將使用者的輸入放入 註解、屬性名稱、標籤名稱 等,因為這些位置都能將字符串作為程式碼運行
    另外,於伺服器上可作以下設定增強瀏覽器的防護:
    • 對 cookie 設定 HttpOnly 的屬性,確保程式碼沒有存取權
    • 設定內容安全策略(CSP)的標頭,明確定義允許瀏覽器在該頁面上加載的內容來源,涵蓋的類型包括 JavaScriptCSS、HTML框架、字體、圖片和可嵌入對象,例如 Java applet、ActiveX等。

結論

不要相信使用者輸入所有訊息,對於使用者輸入訊息轉成替代文字顯示,下次來說說CSRF的原理和防範方法

arrow
arrow

    鳥巢 發表在 痞客邦 留言(0) 人氣()