從無名看 XSS, Cross-Site Scripting 的網站攻擊風險和避免方式

No Comments /

  • Cross-Site Scripting(XSS) 是什麼?
    Cross-Site Scripting 的意思是說自己的網路執行了其他網站的程式碼(Javascript / VBScript),因此而產生了網路安全上的風險,但不表示絕對會產生危險。
  • 那些情況算是 XSS 的狀況?
    1. 部落格小工具
      現在部落格的玩家很喜歡安裝各種可愛、有趣的小玩具,這類行為是站長主動把第三方提供的程式碼安插於網站上。
    2. 網路廣告
      目前廣為流行的網路廣告,如 Google AdSense、BloggerAD、....,都是透過安裝廣告公司提供的程式碼來播送廣告。
    3. 使用現成的程式元件
      例如使用 jQuery 這類的網路程式元件或其相關外掛(Plugins)也算是 XSS。
    4. 網站的設計疏失
      越來越多的網站規劃了很多互動功能,允許網友輸入內容,然而程式若未針對輸入的內容進行審核、過濾時,就有可能被插入 Javascript。

    上述的情況中,使用第三方所提供的程式碼雖然存在風險,但站長可以依據該廠商的公信力來判斷,基本上造成危害的機會不大。只要注意即使是下載被信任的第三方程式碼,也要透過其官方網站取得,而不要透過不知名的網站取得,免得程式碼中被人惡意加入其他程式。
    最主要的問題來自第四項,原因如下。

  • 為什麼會產生危害?
    當自己的網站包含了他方的程式碼時,代表該程式碼可以取得使用者的部份資料,最主要的部份包括 Cookies 資料,或者控制網站的運作動線。
    前者的情況有可能造成網友的個人情資外流,例如網站透過 Cookies 記錄的個人資料或登入序號等,一旦外流就有可能造成被 XSS 侵入者拿來作為身份破解的依據,造成網友權益的損害。
    後者的情況則是,XSS 可能惡意變更網站運作動線,例如自動將網友的 Cookies 值傳送到特定網站;讓網頁自動下載惡意程式;或者是攔截使用者在網頁上輸入的內容,此時若網友輸入帳號/密碼或信用卡號時,危害就非常可觀了。
  • 該怎麼避免?
    1. 使用安全的第三方程式
      在取用第三方程式時,務必留意程式碼的來源。
    2. 提高網路 Cookies 機制的安全係數
      網站透過 Cookies 記錄會員的狀態是難以避免的作法,但必須提高其安全係數才能用得安心。例如:以加密的亂數序號來取代將帳號/密碼寫在 Cookies 的作法,同時該序號最好再和網友的 IP/Browser/... 連動加碼,讓取得該序號的人也難以模擬網友的使用狀態。
    3. 強化網站表單的處理程序
      以 php 的用戶而言,最簡單的作法就是透過 strip_tags 指令將有危害的網頁指令濾除,例如 Script / Embed / Iframe / Frame 等等。最安全的作法是以正向表單透過上述指令開放允許的指令,其他的全部濾除。
    4. 避免取巧的網站程式設計習慣
      部份網站會以 http://xxxx.com?url=http://yyyy.com/zzz.htm 讓網站直接導入網頁,這類的作法存在極高的風險。除了前述對於 Cookies 或網站流程的危害外,更有可能直接破壞網站本身。千萬要嚴格規範,避免網站設計者有此類的設計方式。
  • 無名小站的 Javascript 停用風波?
    無名的官方說法雖然是為了避免XSS造成的風險,但是其實只要針對網站的架構(允許使用者嵌入小工具的頁面不提供登入表單)、會員認證方式(以 One-time password 進行個人化加密)等方式,就能有效控制風險問題。個人覺得無名小站應該是有其他的商業考量,而非單純的技術問題。
VN:F [1.9.22_1171]
Rating: 0.0/10 (0 votes cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)

Post to Twitter Post to Plurk Post to Digg Post to Facebook

Facebook comments:

Leave a Reply

You must be logged in to post a comment.