存取控管 Access Control防護之道 授權(存取控管)是針對特定資源發出存取請求,判斷該請求是否應該被核准或是拒絕. 要注意的是授權與認證是不同的. 這裡個名詞經常被混淆. 授權的設計可以由簡單開始,之後根據應用系統的需求演進為較為複雜的安全控管. 在設計階段的時候有些安全的設計需要考量. 一旦選定特定的授權控制機制後, 之後要再重新更改新的授權機制會比較困難.特別是在多租戶的使用環境下, 權限管理在應用系統安全防護更是重要. 強制所有的存取都需要經過權限控制 有許多的框架或是程式語言只有在程式碼中加入該功能的檢查時才會進行權限控制. 建議權限控制應該是中央控管,所有的存取都應該要再第一時間做權限驗證. 考慮可以設計一個自動過濾的機制, 將所有的存取都透過權限控制的方式檢查 預設不授權 透過自動權限檢查的機制, 考慮預設將所有沒有經過權限檢查的存取都不允許存取. 這樣可以避免新功能因為程式開發遺漏授權檢查而導致跳過授權驗證的步驟.…
身分認證防護之道
身分認證防護之道 認證主要是驗證個人是否為該宣稱的身任. 驗證通常透過提供使用者帳號與其他使用者應該知道的隱私訊息組成.. 會話管理主要是維持認證狀態的一種機制. 這需要後端伺服器記得整個完整交易的請求過程. Sessions就會在用戶端與伺服器端不斷的往返溝通. 因此sessions應該必須保持唯一性而且不容易被猜測. 身分認證管理是一個更大的主題, 不僅僅包含認證與會話管理,還包含服務間的相互認證identity federation, 單一帳號登入認證single sign on與密碼管理, 授權,身份儲存等. 以下是安全防護建置的建議與相關的程式碼範例. 使用多因子認證Multi-Factor Authentication 多因子認證-factor authentication (MFA)的方式可以確保使用者透過下列多重組合的方式認證:…
XSS防護原理與防護程式庫
XSS防護原理與防護程式庫 編碼是一種對許多攻擊防護的有效辦法. 特別是針對注入式的攻擊特別有防護效果. 注入式的攻擊主要透過編碼的方式將特殊符號轉換為一般正常的符號. 透過編碼的方式繞過驗證與過濾. 編碼可以防護的攻擊包含命令注入. (Unix指令, Windows指令) LDAP注入(LDAP 編碼) and XML injection (XML編碼)等. 另外一個對於有效預防XSS的攻擊方是就是資料輸出的編碼. (例如HTML編碼, JavaScript編碼等). 網站開發 網站開發團隊通常會建立動態的網頁, 網頁通常由靜態資料,HTML/JavaScript與使用者輸入的資料所組成.…