(參考知道創宇)php
SQL注入:web
SQL注入(SQL Injection),是一個常見的發生於應用程序和數據庫之間的web安全漏洞,因爲在開發過程當中的設計不當致使程序中忽略了檢查,沒有有效的過濾用戶的輸入,是攻擊者能夠向服務器提交不正常的訪問數據(即惡意的的SQL命令代碼),程序在接收後錯誤的將攻擊者的輸入做爲代碼語句的一部分執行,致使原始的查詢邏輯被改變,額外的執行了攻擊者靜心構造的惡意代碼,從而繞過驗證機制和權限檢查,達到取得隱藏數據或覆蓋關鍵的參值,甚至執行數據庫主機操做系統命令的目的。shell
應對方案:數據庫
一、嚴格限制web應用的數據庫的操做權限,給用戶提供僅能知足需求的最低權限,從而最大限度的減小注入攻擊對數據庫的危害。後端
二、既愛尼察輸入的數據是否具備所要求的數據格式,嚴格限制變量的類型。瀏覽器
三、對進入數據的特殊字符(‘ 「 \ <> & *)進行轉義處理(或編碼轉換)安全
四、不要直接拼接SQL語句,全部的查詢語句建議使用數據庫提供的參數化查詢接口,使用參數化的語句而不是將用戶輸入的變量嵌入SQL語句中。服務器
五、在應用發佈以前建議使用專業的SQL注入檢測工具進行檢測,及時修補被檢測出的SQL注入漏洞。cookie
六、避免網站打印SQL錯誤信息,好比類型錯誤、字段不匹配等。網絡
XSS跨站腳本攻擊:
跨站腳本漏洞(Cross-site scripting , xss),是一種常見的web安全漏洞,因爲web應用未對用戶提交的數據作充分的檢查過濾,容許用戶在提交的數據中摻入HTML代碼(最主要的是」>」,」<」),並將未經轉義的惡意代碼輸出到第三方用戶的瀏覽器解釋執行,從而致使XSS漏洞。攻擊成功後,攻擊者能夠獲得更高的權限、私密網頁內容、會話和cookie等內容。
應對方案:
一、針對請求參數以及用戶可控數據進行防護,對輸出進行編碼處理。
二、在服務端對每個輸入進行合法性驗證,只容許輸入常見符號,字母以及數字。
三、對Cookie添加HttpOnly標識。
CSRF跨站請求僞造:
跨站請求僞造(Cross-site request forgery , CSRF),是一種常見的web安全漏洞,因爲在web請求中重要操做的全部參數可被猜想到,攻擊者可經過一些技術手段欺騙用戶的瀏覽器去訪問一個用戶曾經認證過的網站,遂使攻擊者可冒用用戶的身份,進行惡意操做。
應對方案:
一、在表單中添加一個隨機的數字或字母驗證碼,經過強制用戶和應用進行交互,來有效地遏制CSRF攻擊。
二、若是檢查發現是非正常頁面提交的請求(根據Referer進行判斷),則極有多是CSRF攻擊。
三、在請求的參數裏增長一個隨機的token參數,且不可被猜想。
四、敏感的操做應該使用POST,而不是GET,以form表單的形式提交,能夠避免token泄露。
越權訪問:
越權訪問(Broken Access Control , BAC),是一種常見的web安全漏洞,這類漏洞是指應用在檢查受權(Authorization)時存在紕漏,使得攻擊者能夠利用一些方式繞過權限檢查,訪問或者操做到本來無權訪問的界面。在實際的代碼安全審查中,這類漏洞每每很難經過工具進行自動化檢測,所以在實際應用中危害很大。
應對方案:
一、將用戶身份標識存在session中並驗證,不能吧用戶身份標識以參數形式置於HTTP請求中,應該放在session中,而且僅經過session驗證用戶身份。
二、禁止從Cookie參數中去判斷用戶所屬用戶組,應該經過讀取session會話來判斷用戶所屬用戶組。
三、文件下載時,禁止採用可被猜想的連續ID爲參數進行文件下載,下載文件時也應判斷當前用戶是否有權限下載目標文件。
四、非普通用戶操做頁面嚴格作好權限管理,增刪改查操做須要驗證當前用戶權限。
任意文件上傳:
任意文件上傳(Unrestricted File Upload),是一種常見的web安全漏洞,因爲web應用程序在實現文件上傳功能是對上傳的文件缺乏必要的檢查,使得攻擊者可上傳任意文件。利用該漏洞,攻擊者能夠直接上傳webshell(webShell 就是以asp\php\jsp或者cgi等網頁文件形式存在的一種命令執行環境,也能夠將其稱之爲一種網頁後門)、病毒、惡意腳本等各類危險文件,可能致使服務器權限被直接獲取,從而危及整個系統的安全運行。
應對方案:
一、對用戶上傳的文件後綴採用白名單進行限制,且重命名文件名。
二、限定文件上傳目錄,且該目錄不容許解析動態腳本文件。
三、更新web服務器版本並進行正確配置,防止解析漏洞。
任意文件讀取:
任意文件讀取漏洞(Unrestricted File Upload),是一種常見的web安全漏洞,因web程序提供的文件查看下載、附件下載等功能存在安全缺陷,致使經過秀娥該文件路徑就可以查看和下載任意文件,這些文件包括:源代碼文件、系統文件(/etc/passwd , C:/boot.ini等)、配置文件(config.php , /WEB-INF/web.xml , web.config等),形成網站敏感信息泄露,嚴重危害網站安全。
應對方案:
一、服務端過濾特殊字符。(…./、 ….\、 ….\\)
二、判斷用戶輸入的參數的格式是否合法。
三、指定文件類型白名單(如:jpg\gif\png\rar\zip\pdf\doc\xls\ppt等),禁止用戶讀取、下載白名單之外的文件。
四、指定下載路徑,禁止用戶讀取、下載指定目錄之外的文件。
任意文件包含:
任意文件包含(Unrestricted File Inclusion),是一種常見的web安全漏洞,web程序在引入文件時,因爲傳入的文件名沒有通過合理的校驗或者檢驗被繞過,從而操做了預想以外的文件,致使意外的敏感信息泄露,甚至惡意的代碼注入,使攻擊者獲取到網站服務器權限。
當被包含的文件在服務器本地時,造成本地文件包含漏洞;被包含的文件在第三方服務器時,造成遠程文件包含漏洞。
應對方案:
一、關閉危險的文件打開函數。
二、過濾特殊字符,如:‘.’(點),‘/’(斜槓),‘\’(反斜槓)。
三、對被包含的文件名進行檢測,只容許包含特定文件。
任意代碼執行:
任意代碼執行漏洞(Unrestrcted Code Execution),是一種常見的web安全漏洞,因爲web程序沒有針對執行函數作過濾,當web程序應用在調用一些能將字符串轉化成命令的函數(如PHP中的eval(),system(),exec())時,沒有考慮作一些安全限制,致使能夠經過構造特殊代碼,執行操做系統命令,導致攻擊者獲取到網站服務器權限。
應對方案:
一、若是因使用的框架或中間件形成遠程代碼執行漏洞,需及時升級框架和中間件。
二、針對代碼中可執行的特殊函數入口進行過濾,嘗試對全部提交的可能執行命令的語句進行嚴格的檢查或者對外部輸入進行控制,系統命令執行函數,不容許傳遞外部參數。
三、全部的過濾步驟要在服務器進行,不只要驗證數據的類型,還要驗證期格式、長度、範圍和內容。
撞庫攻擊:
撞庫攻擊(Information Leakage Thinking Library Collision),是一種常見的針對web應用的攻擊方式,爲了方便記憶不少用戶在不一樣網站使用的同一帳號和密碼,黑客經過收集網絡已泄露的拖庫信息,特別是註冊用戶和密碼信息,生成對應的字典表,嘗試批量自動登錄其它網站驗證後,獲得一系列能夠登陸的真實帳戶。
應對方案:
一、加強驗證碼機制,爲防止驗證碼被破解,能夠適當增長驗證碼生成的強度,例如中文圖形驗證碼。
二、自動識別異常IP,對於異常IP,整理一個很是嚴格的惡意IP庫,甚至禁止這些IP訪問網站。
三、用戶帳戶被撞開後的保護,對用戶行爲進行分析,如判斷用戶的登陸IP是否在經常使用地區,若是不是則直接鎖定帳號,讓用戶經過收集、郵箱等手段來解鎖。
用戶名/口令爆破:
用戶名/口令爆破(Brute-force attack),是一種常見的web安全漏洞,因爲用戶登陸模塊缺乏必要的防禦機制,使用網站的註冊或登陸接口,攻擊者經過系統地組合全部可能性(例如登陸時用到的帳戶名、密碼等),並以窮舉法嘗試全部可能性破解用戶的帳戶名、密碼等敏感信息。
應對方案:
一、加強驗證碼機制,爲防止驗證碼被破解,能夠適當怎加驗證碼生成的強度,例如中文圖形驗證碼。
二、用戶名或密碼輸入錯誤均提示「用戶名或密碼錯誤」,防止黑客獲取到註冊用戶的信息。
三、限制用戶登陸失敗次數。
四、限制必定時間內IP登陸失敗次數。
註冊模塊設計缺陷:
註冊模塊設計缺陷(Registration module design flaws),是一種常見的web安全漏洞,網站註冊模塊的設計缺陷將致使一下幾點安全漏洞:
一、任意用戶密碼找回。
二、暴力枚舉網站已註冊用戶。
三、暴力破解用戶密碼。
四、萬能密碼登陸。
五、SQL注入。
以上安全問題會帶來用戶密碼被盜、我的信息泄露、網站數據庫泄露、網站被入侵等風險。
應對方案:
一、若是使用郵件驗證的方式找回密碼,重置密碼令牌須要設置爲不可猜想,且加密令牌時使用經過加密的方式,而不是本身構造;設置重置密碼會話過時時間,在重置密碼時不要從請求中獲取須要重置的用戶名。
二、若是使用短信驗證的方式找回密碼,驗證短信最少應爲6位,且短信過時時間不能超過10分鐘,在發送短信頁面添加通過混淆過的圖形驗證碼,並在後端設置單位時間內的短信發送頻率。
三、限制單位時間內認證錯誤次數。
四、在用戶註冊頁面、登陸界面,添加可靠的機器人識別功能,例如圖形驗證碼或短信驗證碼。
短信接口設計缺陷:
短信接口設計缺陷(SMS interface design flaws),是一種常見的web安全漏洞,短信接口一般用於註冊驗證、登陸驗證及其餘敏感操做的驗證上,但因爲設計不當,一般會致使如下安全問題:
一、短期內發送大量的手機短信。
二、短信驗證碼太短易被猜想。
三、短信驗證碼在發送屢次時,多個驗證碼同時有效。
四、短信驗證碼在HTTP相應包中返回客戶端。
應對方案:
一、在發送短信接口設置機器人識別機制,例如通過混淆的圖形驗證碼,在驗證經過後方可發送手機短信。
二、用來驗證的驗證碼短信最少應爲6位,過時時間內只能有一個驗證碼有效,且有效時間不該超過10分鐘。
三、不要把短信驗證碼返回到客戶端。
URL重定向漏洞:
URL重定向漏洞(URL redirection vulnerability),是一種常見的web安全漏洞,因爲網站URL重定向功能設計不當,沒有驗證跳轉的目標URL是否合法,用戶可經過此漏洞轉到任意網站,這會致使可經過該網站跳轉到存在木馬、病毒的網站或者釣魚網站。
應對方案:
一、不該從用戶請求或填寫的內容中獲取跳轉的目標URL,應在後端設定跳轉URL。
二、對須要跳轉的目標URL進行驗證,若是跳轉的URL不是所容許的,則禁止跳轉。
三、進行URL時提示用戶並顯示跳轉的目標URL地址並詢問是否跳轉。
拒絕服務漏洞:
拒絕服務攻擊(denial-of-service attack , DOS),亦稱「洪水攻擊」,是一種網絡攻擊手段,其目的在於使目標電腦的網絡或系統資源耗盡,使服務暫時中斷或中止,致使其正經常使用戶沒法訪問。
拒絕服務的攻擊也可能致使與目標計算機同一網絡中的其它計算機被攻擊。互聯網和局域網之間的帶寬會被攻擊並致使大量消耗,不但影響目標計算機,同時也影響局域網中的其餘計算機。若是攻擊的規模較大,整個地區的網絡鏈接均可能會受到影響。
應對方案:
拒絕服務攻擊的防護方式一般爲入侵檢測,流量過濾和多重驗證,意在堵塞網絡帶寬的流量將被過濾,而正常的流量可正常經過。
一、網絡設備:防火牆能夠設置規則,例如容許或拒絕特定通信協議、端口或IP地址。當攻擊從少數不正常的IP地址發出時,能夠簡單的使用拒絕規則阻止一切從攻擊源IP發出的通訊。
二、黑洞引導/流量清洗:黑洞引導指將全部受攻擊計算機的通訊所有發送至一個「黑洞」(空接口或不存在的計算機地址)或者有足夠能力處理洪流的網絡運營商,以免網絡受到較大影響。當流量被送到DDoS防禦清洗中心時,經過採用抗DDoS軟件處理,將正常流量和惡意流量區分開。這樣一來可保障站點可以正常運做,處理真實用戶訪問網站帶來的合法流量。
三、web服務器:升級web服務器,避免出現拒絕服務漏洞,如HTTP.sys(MS15-034)。
……………………