作者:劉醇瑞
經過了上次的討論之後,大家對於網站安全問題有了更深刻的體認,老張認為機不可失,幾天後又再舉辦了進一步的教育訓練。
Judy 「安全的網站設計!這不是我們前幾天才討論過的話題嗎?」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小戴 小戴解釋:「雖然同樣是為了強化網站安全,但上次提到的工具應用,偏向於監控及管理運作中的網站。而這次的教育訓練,則著重於網站建置過程中,設計師所需具備的安全概念。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
老張 「不同階段有不同的安全考量,所以今天才會請小劉過來,幫大家補強這方面的知識。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Judy Judy求饒:「我畢業後就沒再碰過程式設計了耶。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 小劉微笑:「今天不談程式設計的細節!如果講那些程式的撰寫、函數的運用,只能對特定的程式設計者產生共鳴。我打算從建築師的角度,探討網站安全的設計,雖然每個人使用的軟體、平台、程式語言都不同,卻有一些相同的安全準則。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Judy Judy喃喃自語:「聽起來好像是一門沒有油煙味的烹飪課….」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
老張 「那我們就趕緊開始吧。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「與一般資訊系統所不同的,網站主要服務的對象是外部使用者,而且絕大多數為匿名。因此我們必須考量到,使用者常會在無法規範或教育訓練的情況下進行操作。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
老張 小戴附和:「這也表示,如果設計者沒有做好通盤的考量,使用者很可能做出預期外的行為,即使他們並非故意,也會造成不良的後果。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 小劉點點頭:「因此第一要務便是控管使用者及網站之間的輸出入。一個良好的輸入過濾設計,應當只接受預期的格式及長度,例如身分證欄位的設計,應檢查英數字、性別代碼、總長度及檢查碼。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
老張 老張提出:「為何要特別強調只接受呢?」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「常見的錯誤是採用黑名單的方式,認為可以過濾一切有害的資料。事實上,在網頁上的字元有無數種編碼型態,我們不可能阻擋所有的變化。也因此,採用白名單的概念才是正確的,只放行允許的資料格式及範圍。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Judy 「像我們這種會員為主的購物網站,作法會有所不同嗎?」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「輸出入過濾應有統一的準則,主要視資料而非身分而定。會員網站的重點應該在認證與授權方面。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Judy Judy不解:「這是指密碼控管之類的嗎?」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小戴 小戴搶著說:「不只唷,從使用者輸入密碼,透過網路傳輸,到網站資料庫儲存或比對密碼,每一個環節都存在安全上的考量。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「沒錯,在網路上傳送敏感資料時,應強制採用加密的方式(如:SSL)。而網站在儲存使用者密碼時,應先經過單向的編碼(如:雜湊)。經由正確的設計,即使傳輸遭竊聽或資料庫外洩,攻擊者仍無法得知真正的資料內容。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
老張 「原來如此,那授權的部分呢?」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「其實只有一個原則,就是只給予必要的權限。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小戴 「這麼說來就好比軍事單位一般,理論上,任何人無法逾權得知與職務不相關的資訊。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 小劉補充:「而且不僅僅是使用者和資訊之間,其他像作業系統、硬體、程式、資料庫等,任何物件之間的存取關係設計,都應謹記此一原則。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小戴 小戴埋怨:「現在的網站普遍都運用了多種程式和技術,想要在每個環節上做好上述要求,還真的讓人有些頭疼呀。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
老張 老張嘆口氣:「資訊系統的複雜性,向來就是安全問題的元兇之一。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「所以保持單純性,也是網站設計的重點唷。在設計一個網站系統時,常會出現幾種情形,像是為了省時,大量使用不同來源的框架及元件;為了酷炫,導入自己也不甚熟悉的新技術;或考量太長遠的擴充性,導致網站架構太過複雜。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
老張 老張意味深長的說:「有幾個傢伙常說:『偷懶可是程式設計師的美德呢!』這些情形有時也是必要之惡,更何況在Web 2.0的環境中,網站之間常以服務的型態結合,要顧及安全性真的不容易。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 小劉點頭:「那到也是,就如同料理一般,你不可能自己養殖所有的東西,這時只好盡可能選擇可靠的食材。當你了解並信任這些材料後,就持續善用它們吧。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Judy Judy揶揄的說:「我看小戴就是那種,會為了喝牛奶養一頭牛的人。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小戴 小戴急忙辯解:「自己寫的程式總覺得比較放心,拿外面現成的程式來用,每個人都能看到原始碼,不是很危險嗎!?」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「其實這是一個常見的迷思,雖然小戴所說的不無道理,但另一方面來說,越多人能夠看到原始碼的程式,意味著越多使用者會協助除錯,進而擁有更好的品質。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小戴 小戴恍然大悟:「不過不管是自己或別人寫的程式,不可避免還是會有臭蟲吧,網站該如何應付這種異常狀態呢?」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「這就屬於例外處理的議題了,在設計上應該考慮到,網站發生異常時頂多讓它無法運作,而不致於危害到既有的資料。另一個重點則是,異常事件的訊息應該被妥善的記錄,而非直接暴露於使用者面前。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Judy Judy抱頭:「設計一個網站系統竟然要考慮這麼多,我開始同情公司那些設計師了。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
小劉 「任何系統的安全取決於其最弱的一環,網站也不例外。網站本身雖然不是個高深的技術,卻逐漸發展的越來越複雜,也因此,必須要從各個環節加以重視,方能取得整體的安全。」
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

網站安全設計重點:

控管使用者與網站間的輸出入
過濾機制應使用白名單而非黑名單的概念
採用加密方式傳輸敏感資料,並使用單向編碼方式儲存密碼資料
確認只給予必要而剛好的權限
保持系統的單純性
選擇可信賴的模組,並充分再利用
異常狀態之處理也要納入設計考量
經濟部中小企業處 主辦 中華民國資訊軟體協會 執行

Copyright © 2008 Information Service Industry Association of R.O.C. All Rights Reserved.
版權所有,禁止侵害,違者必究