身分認證防護之道 認證主要是驗證個人是否為該宣稱的身任. 驗證通常透過提供使用者帳號與其他使用者應該知道的隱私訊息組成.. 會話管理主要是維持認證狀態的一種機制. 這需要後端伺服器記得整個完整交易的請求過程. 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與使用者輸入的資料所組成.…
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,…