陸英
隨著互聯網的普及,網絡安全變得越來越重要,程序員需要掌握最基本的Web安全防范,下面列舉一些常見的安全漏洞和對應的防御措施。
跨站腳本(XSS)漏洞
1. XSS簡介
XSS是一種經常出現在Web應用中的計算機安全漏洞,也是Web中最主流的攻擊方式。
XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,添加一些代碼,嵌入到Web頁面,使別的用戶訪問都會執行相應的嵌入代碼。
2. XSS的危害
盜取用戶資料,比如:登錄帳號、網銀帳號等;
利用用戶身份,讀取、篡改、添加和刪除數據等;
盜竊重要的具有商業價值的資料;
非法轉賬;
強制發送電子郵件;
網站掛馬;
控制受害者機器向其他網站發起攻擊。
3.防止XSS的解決方案
XSS的根源主要是沒完全過濾客戶端提交的數據,所以重點是要過濾用戶提交的信息。將重要的cookie標記為http only,js中的document.cookie語句就不能獲取到cookie。
只允許用戶輸入我們期望的數據。例如:年齡只允許用戶輸入數字,而數字之外的字符都過濾掉。
對數據進行HtmlEncode處理:用戶數據提交時進行HTML編碼,將相應的符號轉換為實體名稱再進行下一步處理。
過濾或移除特殊的Html標簽。
過濾js事件的標簽。例如“onclick=”,“onfocus”等。

跨站點請求偽造(CSRF)
1. CSRF簡介
CSRF也被稱為One Click Attack或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網站的惡意利用。
XSS主要利用站點內的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求,利用受信任的網站。與XSS攻擊相比,CSRF更具危險性。
2. CSRF的危害
CSRF主要的危害來自于攻擊者盜用用戶身份,發送惡意請求。比如:模擬用戶發送郵件、消息以及支付和轉賬等。
3.防止CSRF的解決方案
重要數據交互采用POST進行接收,用POST也不是萬能的,偽造一個form表單即可破解。
使用驗證碼,只要涉及到數據交互就先進行驗證碼驗證,這個方法可以完全解決CSRF。但是出于用戶體驗考慮,網站不能給所有的操作都加上驗證碼。因此驗證碼只能作為一種輔助手段,不能作為主要解決方案。
驗證HTTP Referer字段,該字段記錄了此次HTTP請求的來源地址,最常見的應用是圖片防盜鏈。
也可為每個表單添加令牌token并驗證。
SQL注入漏洞
1 . SQL簡介
SQL注入是比較常見的網絡攻擊方式之一,主要是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,實現無帳號登錄,甚至篡改數據庫。
2. SQL的危害
數據庫信息泄漏:數據庫中存放的用戶隱私信息泄露;
網頁篡改:
通過操作數據庫對特定網頁進行篡改;
數據庫被惡意操作:數據庫服務器被攻擊,數據庫的系統管理員帳戶被竄改;
服務器被遠程控制,被安裝后門;
刪除和修改數據庫表信息。
3. SQL注入的方式
表單提交:主要是POST請求,也包括GET請求;
URL參數提交:主要為GET請求參數,Cookie參數提交;
HTTP請求頭部一些可修改的值,比如Referer和User_ Agent等。
4.防止SQL的解決方案
對用戶的輸入進行校驗,使用正則表達式過濾傳入的參數;使用參數化語句,不要拼接sql,也可以使用安全的存儲過程;不要使用管理員權限的數據庫連接,為每個應用使用權限有限的數據庫連接;檢查數據存儲類型;重要信息一定要加密。
分布式拒絕服務(DDoS)攻擊
1. DoS攻擊和DDoS簡介
DDoS是攻擊者通過控制在網絡上的傀儡主機,同時發動他們向目標主機進行拒絕服務攻擊的方式稱DDoS攻擊。
2. DDoS的危害
造成客戶業務不可用、利益受損;
客戶網內一個業務受到攻擊,客戶聯網全面受阻,所有業務癱瘓,連鎖反應嚴重;
引發政治影響、社會輿論的壓力給企業帶來名譽損失。
3.如何防御DDoS攻擊
及時更新系統補丁;安裝查殺軟硬件,及時更新病毒庫;設置復雜口令,減低系統被控制的可能性;關閉不必要的端口與服務;經常檢測網絡的脆弱性,發現問題及時修復。
對于重要的Web服務器建立多個鏡像實現負載均衡,在一定程度上減輕DDoS的危害。
總之,既要做好過濾與編碼并使用參數化語句,也要把重要的信息進行加密處理,這樣SQL注入漏洞才能得到更好的解決。
