系統設計的階段可細分為三大部分:主機、應用系統、以及資料。
首先,對於主機的選擇,我們需要考慮是使用Linux還是Windows。這個決定往往基於開發者的維護能力和熟悉度。
當然還有硬體的選擇,是否要使用RAID 5增加容錯機會,或是建立持續的備份機制所需的硬體空間。
其次,當涉及到應用系統,我們必須決定用哪種程式語言進行開發。每種語言都有其特色;例如,使用C語言開發的程式由於其指標操作能力可能會面臨記憶體管理的風險。但幸好,許多現代的程式語言都能有效地處理這些問題,實現自動記憶體回收。
最後,資料的部分是至關重要的。透過在開發之初進行妥善的設計,許多潛在問題都可被規避。以OWASP的A01:2021-Broken Access Control為例,這種問題常發生在迭代開發的過程中。開發者在初步測試時可能僅著重於功能的實現,而忽略了安全認證,最終導致高權限的程式不經意地上線。這樣的風險完全可以透過在設計階段訂立嚴格的規範來避免。在上線前,只需按照這些規範進行檢驗,就能有效地防範潛在的安全風險,確保不會因疏忽造成資料外洩。
在針對這三部分的設計後,系統設計階段還有一個十分需要處理的就是風險,例如前面提到的授權問題、常見的XSS與SQL injection問題,或是log記錄的內容,這些林林總總各種有風險的事項都能條列並標出是否最後能成為可接受風險。
而設計原則就是KISS原則:是英語 Keep It Simple, Stupid 的首字母縮略字,是一種歸納過的經驗原則。KISS 原則是指在設計當中應當注重簡約的原則。
簡約且明確的設計,可以讓未來的你讀懂現在的你在想什麼,可以讓不同的接手同仁迅速的上手而不必猜是如何實作的,就算是最差情形的重新改寫,也能得知原本的設計是哪些。