軟體品管

存取控管 Access Control防護之道

存取控管 Access Control防護之道 授權(存取控管)是針對特定資源發出存取請求,判斷該請求是否應該被核准或是拒絕. 要注意的是授權與認證是不同的. 這裡個名詞經常被混淆. 授權的設計可以由簡單開始,之後根據應用系統的需求演進為較為複雜的安全控管. 在設計階段的時候有些安全的設計需要考量. 一旦選定特定的授權控制機制後, 之後要再重新更改新的授權機制會比較困難.特別是在多租戶的使用環境下, 權限管理在應用系統安全防護更是重要. 強制所有的存取都需要經過權限控制 有許多的框架或是程式語言只有在程式碼中加入該功能的檢查時才會進行權限控制. 建議權限控制應該是中央控管,所有的存取都應該要再第一時間做權限驗證. 考慮可以設計一個自動過濾的機制, 將所有的存取都透過權限控制的方式檢查 預設不授權 透過自動權限檢查的機制, 考慮預設將所有沒有經過權限檢查的存取都不允許存取. 這樣可以避免新功能因為程式開發遺漏授權檢查而導致跳過授權驗證的步驟.…

Read More

身分認證防護之道

身分認證防護之道 認證主要是驗證個人是否為該宣稱的身任. 驗證通常透過提供使用者帳號與其他使用者應該知道的隱私訊息組成.. 會話管理主要是維持認證狀態的一種機制. 這需要後端伺服器記得整個完整交易的請求過程. Sessions就會在用戶端與伺服器端不斷的往返溝通. 因此sessions應該必須保持唯一性而且不容易被猜測. 身分認證管理是一個更大的主題, 不僅僅包含認證與會話管理,還包含服務間的相互認證identity federation, 單一帳號登入認證single sign on與密碼管理, 授權,身份儲存等. 以下是安全防護建置的建議與相關的程式碼範例. 使用多因子認證Multi-Factor Authentication 多因子認證-factor authentication (MFA)的方式可以確保使用者透過下列多重組合的方式認證:…

Read More

SQL Injection 防護設計建議與程式範例 Java, Python, .Net

SQL Injection 防護設計建議與程式範例 Java, Python, .Net SQL注入是最危险的Web应用程序的风险之一。 SQL注入是很容易透過现有许多开源自动化攻击工具達成。 SQL注入對於應用程序也可能造成致命性的嚴重影響. 恶意SQL代码注入到Web应用程序時 – 可以造成整个数据库有可能被窃取,刪除或修改。 Web应用程序甚至可以用来对運行數據庫的操作系统的主机操作系统命令. 導致SQL注入最主要的原因在於將SQL查询語句與參數的輸入包含在一个查询字符串。 要避免SQL注入的攻擊, 必須要避免不可信的資料輸入成為SQL語句的一部份. 設計上最好的防護方式就是將查詢參數化‘Query Parameterization’. 查詢參數化主要是將SQL語句與參數分離後送到數據庫處理. 有許多的開發框架(Rails,…

Read More