網站安全🔒 打好基本功!大師教你 10 大網站安全設計原則
Published in
Jan 7, 2019
筆者任職 Yahoo ,《經典駭客攻擊教程:給每個人的網站安全入門》線上課程講師 ,粉絲團《程式猿吃香蕉🍌》
軟體安全從設計做起!著名講者 Eoin Woods 以他多年經驗,歸納10條安全設計原則。無論是專案經理或是工程師,這部影片都能讓你有所收穫。
以下是我彙整影片內容的摘要。
10 大安全設計原則指南
(1) 最小權限原則 ( Least privilege )
https://youtu.be/4qN3JBGd1g8?t=685
- 相信大家都曾有過這樣的經驗,每個工程師都拿sudo權限,都有權限改系統設定,造成環境的混亂。
- 應該要給大家盡量小的權限,讓大家能夠完成任務即可,不要拿過多的權限。
(2) 責任分離原則 (Separate responsibilities)
https://youtu.be/4qN3JBGd1g8?t=831
- 不管是在商業邏輯層級或是系統層級,都應該做到責任分離。例如:付款模組跟訂單模組應該要分開,前端介面跟後端資料庫要分開,各司其職。
- 這樣的原則跟出納跟會計要分開很像,責任分離避免安全性的疑慮。
(3) 不輕易相信 ( Trust cautiously )
https://youtu.be/4qN3JBGd1g8?t=1024
- 任何未知的連接都應該視為不可被信任的。
- 講者舉了一個Message Queue的案例,說明不應該輕易相信每一個連線。
(4) 盡可能地採用簡單的做法 ( Simplest solution possible )
https://youtu.be/4qN3JBGd1g8?t=1464
- 若是安全設計太複雜,便很難被大家理解,而大家無法理解的話,就會很難正確執行。
(5) 記錄敏感的事件 ( Audit sensitive events )
https://youtu.be/4qN3JBGd1g8?t=1678
- 至少當系統出事的時候,可以知道發生了什麼事情。
- 這些 Log 需要放在更安全的地方,權限也要做另外的控管。
(6) 安全地使用預設值 ( Secure defaults )
https://youtu.be/4qN3JBGd1g8?t=1813
- 大部分的人都不會更改預設的帳號密碼,當系統安裝完後,就使用預設的帳密做事,這樣是很危險的。
- 你們家裡的買的wifi分享器,密碼都改了嗎 ?
(7) 不要依賴「混淆」 ( Never rely on obscurity )
https://youtu.be/4qN3JBGd1g8?t=1950
- 「混淆」機制有很多種,例如:更換 port 號, 混淆程式碼等等。
- 不要過度依賴這些方式來防禦,因為既然是人做的混淆,總有可能被暴力猜中。
(8) 深層的防禦 ( Defense in depth )
https://youtu.be/4qN3JBGd1g8?t=2196
- 就像古代的城堡有很多層防禦,系統的防禦也應該從 UI, API, Database 都作防禦。
- 避免被駭客單點突破後,整個系統就被予取予求。
(9) 不要發明自行安全機制 ( Never invent security tech )
https://youtu.be/4qN3JBGd1g8?t=2372
- 自行發明東西很酷!但是不要用在自己發明安全機制,例如:不要自己發明加密演算法,因為你設計的東西很難一次就完美。
(10) 找尋脆弱的環節 ( Secure the weakest link )
https://youtu.be/4qN3JBGd1g8?t=2463
- 應該主動地去找尋系統的弱點,然後改進它。
- 缺點是會花費很多時間和成本。
若是喜歡我分享的內容,歡迎幫我按個拍手,可拍 50下,給我一點鼓勵,若對資訊安全有興趣,也可以參考我的線上課程《經典駭客攻擊教程:給每個人的網站安全入門》