計算機程序主要是輸入/輸出,安全問題由此產生,凡是有輸入的地方都可能帶來安全風險。根據輸入的數據類型,web應用主要有數值型、字符型、文件型。
要消除風險就要對輸入的數據進行檢查,對于網站應用來說,檢查的位置主要是前端和后端。前端檢查只能防止正常狀況,沒法防止使用工具、程序繞開檢查直接把數據發送給服務器。
安全問題主要有以下幾方面
1)SQL、HTML、JS、OS命令注入;
2)XSS跨站腳本攻擊,利用站內信任的用戶,在web頁面插入惡意script代碼;
3)CSRF跨站請求偽造,通過偽裝來自信任用戶的請求來利用受信任的網站;
4)目錄遍歷漏洞;
5)參數篡改;
6)會話劫持。
防止攻擊的措施總結
1) 對用戶輸入的數據進行全面安全檢查或過濾,尤其注意檢查是否包含SQL 或XSS特殊字符。驗證用戶輸入的數據,包括值、類型、范圍等等,用驗證控件進行驗證,這些檢查或過濾必須在服務器端、客戶端都進行。客戶端服務端都要進行驗證,客戶端為了提高用戶體驗,服務端才可以有效防止威脅;
2)不要使用管理員權限的數據庫連接,不要使用動態拼接sql;
3)機密信息加密,不能使用明文;
4)每個頁面加載時,對用戶合法性進行判斷;
5)登錄后session中的敏感信息需要加密,避免在永久cookies中存儲敏感信息,重要的cookie標記為http only;
6)發送敏感信息時使用SSL、POST方式,盡量使用新型web HSTS安全協議;
7)不要直接拋出異常的詳細信息給用戶,異常返回友好的頁面,防止用戶看到敏感信息;
8)在服務器與網絡的接口處配置防火墻,用于阻斷外界用戶對服務器的掃描和探測;
9)限制網站后臺訪問權限,如:禁止公網IP訪問后臺;禁止服務員使用弱口令;
10)關閉windows的8.3格式功能。DOS系統下的命令方式為8.3格式,即文件名不超過8個字符,擴展名不超過3個字符。形如:???.exe 。現在Windows系統文件名長度更長可達255個字符了;
11)限制敏感頁面或目錄的訪問權限;
12)項目發布前使用使用漏洞掃描軟件,如IBM appScan,UnisWebScanner,對安全性進行評估。