隨着互聯網的普及,網絡安全變得愈來愈重要,程序員須要掌握最基本的web安全防範,下面列舉一些常見的安全漏洞和對應的防護措施。程序員
0x01: XSS漏洞
一、XSS簡介web
跨站腳本(cross site script)簡稱爲XSS,是一種常常出如今web應用中的計算機安全漏洞,也是web中最主流的攻擊方式。正則表達式
XSS是指惡意攻擊者利用網站沒有對用戶提交數據進行轉義處理或者過濾不足的缺點,進而添加一些代碼,嵌入到web頁面中去,使別的用戶訪問都會執行相應的嵌入代碼。sql
二、XSS攻擊的危害數據庫
- 盜取用戶資料,好比:登陸賬號、網銀賬號等
- 利用用戶身份,讀取、篡改、添加、刪除數據等
- 盜竊重要的具備商業價值的資料
- 非法轉帳
- 強制發送電子郵件
- 網站掛馬
- 控制受害者機器向其它網站發起攻擊
三、防止XSS解決方案安全
- XSS的根源主要是沒徹底過濾客戶端提交的數據 ,因此重點是要過濾用戶提交的信息。
- 將重要的cookie標記爲http only, 這樣的話js 中的document.cookie語句就不能獲取到cookie了。
- 只容許用戶輸入咱們指望的數據。例如:age用戶年齡只容許用戶輸入數字,而數字以外的字符都過濾掉。
- 對數據進行Html Encode 處理:用戶將數據提交上來的時候進行HTML編碼,將相應的符號轉換爲實體名稱再進行下一步的處理。
- 過濾或移除特殊的Html標籤。
- 過濾js事件的標籤。例如 "onclick=", "onfocus" 等。
0x02:CSRF攻擊(跨站點請求僞造)
一、CSRF簡介服務器
CSRF(Cross-site request forgery)跨站請求僞造,也被稱爲「One Click Attack」或者Session Riding,一般縮寫爲CSRF或者XSRF,是一種對網站的惡意利用。cookie
XSS主要是利用站點內的信任用戶,而CSRF則經過假裝來自受信任用戶的請求,來利用受信任的網站。與XSS攻擊相比,CSRF更具危險性。網絡
二、CSRF攻擊的危害負載均衡
主要的危害來自於,攻擊者盜用用戶身份,發送惡意請求。好比:模擬用戶發送郵件,發消息,以及支付、轉帳等。
三、防止CSRF的解決方案
- 重要數據交互採用POST進行接收,固然是用POST也不是萬能的,僞造一個form表單便可破解。
- 使用驗證碼,只要是涉及到數據交互就先進行驗證碼驗證,這個方法能夠徹底解決CSRF。
- 可是出於用戶體驗考慮,網站不能給全部的操做都加上驗證碼。所以驗證碼只能做爲一種輔助手段,不能做爲主要解決方案。
- 驗證HTTP Referer字段,該字段記錄了這次HTTP請求的來源地址,最多見的應用是圖片防盜鏈。
- 爲每一個表單添加令牌token並驗證。
0x03:SQL注入漏洞
一、簡介
SQL注入是比較常見的網絡攻擊方式之一,主要是經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,實現無賬號登陸,甚至篡改數據庫。
二、SQL注入的危害
- 數據庫信息泄漏:數據庫中存放的用戶的隱私信息的泄露;
- 網頁篡改:經過操做數據庫對特定網頁進行篡改;
- 數據庫被惡意操做:數據庫服務器被攻擊,數據庫的系統管理員賬戶被竄改;
- 服務器被遠程控制,被安裝後門;
- 刪除和修改數據庫表信息.
三、SQL注入的方式
一般狀況下,SQL注入的位置包括:
- 表單提交,主要是POST請求,也包括GET請求;
- URL參數提交,主要爲GET請求參數;
- Cookie參數提交;
- HTTP請求頭部的一些可修改的值,好比Referer、User_Agent等;
四、防止SQL注入的解決方案
- 對用戶的輸入進行校驗,使用正則表達式過濾傳入的參數;
- 使用參數化語句,不要拼接sql,也可使用安全的存儲過程;
- 不要使用管理員權限的數據庫鏈接,爲每一個應用使用權限有限的數據庫鏈接;
- 檢查數據存儲類型;
- 重要的信息必定要加密;
0x04:DDOS攻擊
一、DOS攻擊和DDOS簡稱
- DOS攻擊(Denial of Service 拒絕服務攻擊):凡是利用網絡安全防禦措施不足致使用戶不能繼續使用正常服務的攻擊手段,均可以被稱爲是拒絕服務攻擊,其目的是經過消耗網絡寬帶或系統資源,使網絡或計算機不能提供正常的服務。
- DDOS(Distributed Denial of Service ,分佈式拒絕服務),凡是攻擊者經過控制在網絡上的傀儡主機,同時發動他們向目標主機進行拒絕服務攻擊的方式稱爲分佈式拒絕服務攻擊。
二、DDOS的危害
- 形成客戶業務不可用、利益受損
- 客戶網內一個業務受到攻擊,客戶聯網全面受阻,全部業務癱瘓,連鎖反應嚴重
- 攻擊引起的政治影響、社會輿論的壓力給企業帶來名譽損失
三、如何防護DDOS攻擊
- 及時更新系統補丁
- 安裝查殺軟硬件,及時更新病毒庫
- 設置複雜口令,減低系統被控制的可能性
- 關閉沒必要要的端口與服務
- 常常檢測網絡的脆弱性,發現問題及時修復。
- 對於重要的web服務器能夠創建多個鏡像實現負載均衡,在必定程度上減輕DDOS的危害
總之就是既要作好過濾與編碼並使用參數化語句,也要把重要的信息進行加密處理,這樣SQL注入漏洞才能更好的解決。