Web世界中潛藏的危機 - 跨網站指令碼(XSS)
互聯網的時代中我們幾乎都離不開網路,那如果能夠對於Web具備基礎的知識,就能夠讓我們在使用網路的過程中提升風險意識,以減少被竊取、盜用的風險,進而保護個人資產,因此多一份知識在身上也就等於多了一份防身的武器,一天學一點,透過微習慣讓我們享受複利的效應。
在前幾篇我們介紹了「同源政策(Same Origin Policy)」與「Web - 跨來源資源共用(CORS)」的基本概念之後,大致上已經了解瀏覽器如何做個守門員,攔截非法的請求/回應,接下來我們就來談談駭客如何繞過「同源政策(Same Origin Policy)」進行跨站腳本攻擊的XSS(Cross-Site Scripting)。
由於Web越來越豐富,許多動畫、特效都能在Web上完成,這些都歸功於Javascript,但也由於可程式化的便利性,導致駭客可以利用這樣的特性,注入有害的腳本,造成資安風險。
為什麼Cross-Site Scripting要簡稱為XSS呢? 因為避免與CSS混淆,因此簡稱為XSS。
試想,當國家與國家之間透過有限度地開放跨來源資源共用(CORS)時,難免存在一些有心人士,繞過政策進行地下活動,就如同現實世界的偷渡、詐騙皆被搬到Web世界運行,而以下將介紹這樣的攻擊類型有哪些? 對我們來說有什麼危害? 我們身為使用者又應該注意什麼呢?
🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔
攻擊的類型有哪些?
儲存型(Stored XSS)
這種類型的攻擊方式就是將惡意的指令碼,注入到網站伺服器進行儲存,而當使用者進到駭客注入的功能區塊時,當滿足特定條件(按下按鈕、觀看圖片...)之後觸發惡意腳本,最常見的例子就是留言版了,這是最普遍能夠輸入文字(指令碼)的入口,並且也會被儲存於資料庫中。
- 駭客將惡意代碼寫到網站伺服器儲存的DB。
- 使用者打開網站時,載入惡意程式碼。
- 惡意程式碼竊取個人資訊或者冒充用戶身分進行深層攻擊。
反射型(Reflected XSS)
- 駭客發送夾帶惡意連結的信件,誘導受害者點擊。
- 受害者點擊後,導至駭客架設的網站。
- 透過連結的參數觸發惡意腳本,進而攻擊、竊取用戶資訊。
有些也會直接夾帶腳本參數如下:
<http://www.domain-1.com/edit?id=><script>alert(1);</script>
可能造成的危害
- 如果攻擊者僅是惡作劇, 撰寫出一個拖垮資源的腳本, 那麼很可能導致我們的瀏覽器無法正常運作, 導致當機狀態。
- 身份被冒用, 進入瀏覽過的網站,盜取重要個人資訊。
- 將使用者瀏覽器導向駭客架設網站, 下載後門程式到使用者電腦。
如何防範?
- 信件中若有可疑的主旨、內文、附件,就盡量不要直接點擊,可以透過後面的掃描工具進行掃描,確認安全無虞之後再進行下一步。
- 假設我們身為網站開發者,應該對這樣的攻擊具有基本的認識,並且於輸入的入口使用過濾套件來避免XSS的注入攻擊,原則上就是不要相信使用者的任何輸入。
- 網站開發者對於Cookie應設定HttpOnly的屬性,避免利用Cookie盜取個人資訊。
- 設定內容安全策略(CSP),明確的定義哪些內容(HTML、圖片...等)可以被加載,這部分後面的篇章會談到。
幫助我們進行掃描的好工具
以下幾個工具可以讓我們發現到可疑連結時,先丟到這邊進行掃描,若確認安全無誤,在進行點擊,而以下的工具網址,避免讀者們擔心,故將原始網址位置輸出,若有疑慮可以自行Google。
🔔還沒成為Potato會員的朋友點這裡加入哦,撰寫文章還能挖礦打造被動收入 🔔