隨著互聯(lián)網(wǎng)的普及,網(wǎng)絡(luò)安全變得越來越重要,程序員需要掌握最基本的web安全防范,下面列舉一些常見的安全漏洞和對應(yīng)的防御措施。

0x01: XSS漏洞
1、XSS簡介
跨站腳本(cross site script)簡稱為XSS,是一種經(jīng)常出現(xiàn)在web應(yīng)用中的計算機(jī)安全漏洞,也是web中最主流的攻擊方式。
XSS是指惡意攻擊者利用網(wǎng)站沒有對用戶提交數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理或者過濾不足的缺點(diǎn),進(jìn)而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會執(zhí)行相應(yīng)的嵌入代碼。
2、XSS攻擊的危害
盜取用戶資料,比如:登錄帳號、網(wǎng)銀帳號等
利用用戶身份,讀取、篡改、添加、刪除數(shù)據(jù)等
盜竊重要的具有商業(yè)價值的資料
非法轉(zhuǎn)賬
強(qiáng)制發(fā)送電子郵件
網(wǎng)站掛馬
控制受害者機(jī)器向其它網(wǎng)站發(fā)起攻擊
3、防止XSS解決方案
XSS的根源主要是沒完全過濾客戶端提交的數(shù)據(jù) ,所以重點(diǎn)是要過濾用戶提交的信息。
將重要的cookie標(biāo)記為http only, 這樣的話js 中的document.cookie語句就不能獲取到cookie了。
只允許用戶輸入我們期望的數(shù)據(jù)。例如:age用戶年齡只允許用戶輸入數(shù)字,而數(shù)字之外的字符都過濾掉。
對數(shù)據(jù)進(jìn)行Html Encode 處理:用戶將數(shù)據(jù)提交上來的時候進(jìn)行HTML編碼,將相應(yīng)的符號轉(zhuǎn)換為實(shí)體名稱再進(jìn)行下一步的處理。
過濾或移除特殊的Html標(biāo)簽。
過濾js事件的標(biāo)簽。例如 "onclick=", "onfocus" 等。
0x02:CSRF攻擊(跨站點(diǎn)請求偽造)
1、CSRF簡介
CSRF(Cross-site request forgery)跨站請求偽造,也被稱為“One Click Attack”或者Session Riding,通常縮寫為CSRF或者XSRF,是一種對網(wǎng)站的惡意利用。
XSS主要是利用站點(diǎn)內(nèi)的信任用戶,而CSRF則通過偽裝來自受信任用戶的請求,來利用受信任的網(wǎng)站。與XSS攻擊相比,CSRF更具危險性。
2、CSRF攻擊的危害
主要的危害來自于,攻擊者盜用用戶身份,發(fā)送惡意請求。比如:模擬用戶發(fā)送郵件,發(fā)消息,以及支付、轉(zhuǎn)賬等。
3、防止CSRF的解決方案
重要數(shù)據(jù)交互采用POST進(jìn)行接收,當(dāng)然是用POST也不是萬能的,偽造一個form表單即可破解。
使用驗(yàn)證碼,只要是涉及到數(shù)據(jù)交互就先進(jìn)行驗(yàn)證碼驗(yàn)證,這個方法可以完全解決CSRF。
但是出于用戶體驗(yàn)考慮,網(wǎng)站不能給所有的操作都加上驗(yàn)證碼。因此驗(yàn)證碼只能作為一種輔助手段,不能作為主要解決方案。
驗(yàn)證HTTP Referer字段,該字段記錄了此次HTTP請求的來源地址,最常見的應(yīng)用是圖片防盜鏈。
為每個表單添加令牌token并驗(yàn)證。
0x03:SQL注入漏洞
1、簡介
SQL注入是比較常見的網(wǎng)絡(luò)攻擊方式之一,主要是通過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,實(shí)現(xiàn)無帳號登錄,甚至篡改數(shù)據(jù)庫。
2、SQL注入的危害
數(shù)據(jù)庫信息泄漏:數(shù)據(jù)庫中存放的用戶的隱私信息的泄露;
網(wǎng)頁篡改:通過操作數(shù)據(jù)庫對特定網(wǎng)頁進(jìn)行篡改;
數(shù)據(jù)庫被惡意操作:數(shù)據(jù)庫服務(wù)器被攻擊,數(shù)據(jù)庫的系統(tǒng)管理員帳戶被竄改;
服務(wù)器被遠(yuǎn)程控制,被安裝后門;
刪除和修改數(shù)據(jù)庫表信息.
3、SQL注入的方式
通常情況下,SQL注入的位置包括:
4、防止SQL注入的解決方案
對用戶的輸入進(jìn)行校驗(yàn),使用正則表達(dá)式過濾傳入的參數(shù);
使用參數(shù)化語句,不要拼接sql,也可以使用安全的存儲過程;
不要使用管理員權(quán)限的數(shù)據(jù)庫連接,為每個應(yīng)用使用權(quán)限有限的數(shù)據(jù)庫連接;
檢查數(shù)據(jù)存儲類型;
重要的信息一定要加密;
0x04:DDOS攻擊
1、DOS攻擊和DDOS簡稱
DOS攻擊(Denial of Service 拒絕服務(wù)攻擊):凡是利用網(wǎng)絡(luò)安全防護(hù)措施不足導(dǎo)致用戶不能繼續(xù)使用正常服務(wù)的攻擊手段,都可以被稱為是拒絕服務(wù)攻擊,其目的是通過消耗網(wǎng)絡(luò)寬帶或系統(tǒng)資源,使網(wǎng)絡(luò)或計算機(jī)不能提供正常的服務(wù)。
DDOS(Distributed Denial of Service ,分布式拒絕服務(wù)),凡是攻擊者通過控制在網(wǎng)絡(luò)上的傀儡主機(jī),同時發(fā)動他們向目標(biāo)主機(jī)進(jìn)行拒絕服務(wù)攻擊的方式稱為分布式拒絕服務(wù)攻擊。
2、DDOS的危害
3、如何防御DDOS攻擊
及時更新系統(tǒng)補(bǔ)丁
安裝查殺軟硬件,及時更新病毒庫
設(shè)置復(fù)雜口令,減低系統(tǒng)被控制的可能性
關(guān)閉不必要的端口與服務(wù)
經(jīng)常檢測網(wǎng)絡(luò)的脆弱性,發(fā)現(xiàn)問題及時修復(fù)。
對于重要的web服務(wù)器可以建立多個鏡像實(shí)現(xiàn)負(fù)載均衡,在一定程度上減輕DDOS的危害
總之就是既要做好過濾與編碼并使用參數(shù)化語句,也要把重要的信息進(jìn)行加密處理,這樣SQL注入漏洞才能更好的解決。