資源描述:
《基于soap的web服務攻擊及防范 》由會員上傳分享,免費在線閱讀,更多相關內容在學術論文-天天文庫。
1、基于SOAP的Web服務攻擊及防范 摘要:該文討論了基于SOAP協(xié)議的L為基礎的協(xié)議,在e方法,看看服務器對這些參數(shù)是如何響應的。同時我們知道Name參數(shù)的數(shù)據(jù)類型為String,這是很容易遭到參數(shù)欺騙攻擊的一種數(shù)據(jù)類型。圖2實驗1(在name參數(shù)中輸入“’”以及服務器的響應)從上面服務器的響應可以看出,e參數(shù)沒有進行最基本的參數(shù)檢查。根據(jù)服務器返回的FaultString來看,e(Stringname,Stringuid,Stringpassation(StringproductName,Stringuid,Stri
2、ngpass.Data.OleDb.OleDbException:語法錯誤(缺少操作符)inqueryexpression‘productnamelike‘‘’andproviderid=’551-457-4487’,這句話告訴我們內部的SQL查詢使用了SQL語句的LIKE表達式,應用程序根據(jù)我們給出的用來欺騙的單引號等參數(shù)生成最終的SQL查詢語句。通過以上分析,我們知道既然Web服務使用了Like表達式,那么我們用通配符%作為參數(shù),來觀察應用程序如何響應。我們想定的結果是程序將返回至少一個產品記錄。圖3實驗2(在參數(shù)
3、中輸入“%”及服務器響應)從圖3可以看出,正如我們所想定的,服務器返回了一條產品記錄。但我們發(fā)現(xiàn),服務器只返回了一條記錄而不是全部的記錄。邏輯上來說,輸入通配符%,內部查詢應該返回所有的產品記錄。但是,我們定義的GetProductInformationByName方法,返回參數(shù)的類型是String而不是ArrayOfString。這是SOAP協(xié)議進行強制的類型和輸入輸出編碼檢查的一個方面。通過實驗1和實驗2,我們可以得到結論——SQL的Like表達式可以返回一些我們本不能得到的信息。ationByName方法用戶認證
4、的執(zhí)行過程,實驗3中我們還是利用實驗1中對name參數(shù)采用的方法,將單引號插入uid參數(shù),看看是否會影響用戶認證SQL表達式?!瘓D4實驗3(在用戶id參數(shù)中加入“’”及服務器返回的結果)在這個實驗的想定中,服務器返回的FaultSstring告訴我們程序是如何利用uid和passethingfromsometableethingfromsometablewhereuid=’’or’’=’’andpassword=’’orproviderid=’787-457-1154’。服務將接收我們的SQL,返回我們想竊取的用戶信息
5、。圖6實驗5(用戶名及口令欺騙及服務器返回的結果)3、防范Web服務攻擊保護Web服務不被攻擊需要開發(fā)人員、系統(tǒng)管理員和管理人員的協(xié)作。黑客們會不斷地改變他們的攻擊方法,所以我們需要一個完善的安全的Web應用。防范Web服務攻擊最有效的方法就是進行輸入?yún)?shù)與返回結果的驗證和檢查。在參數(shù)傳給服務器之前,任何可能引起不安全因素的字符或字符串都要進行處理。去除引號,反斜線等等還不足夠,最好的方法是指定一種拒絕錯誤的規(guī)則來過濾掉不安全的數(shù)據(jù),包括語法和邏輯檢查等等。應用程序同樣要對返回給用戶的數(shù)據(jù)進行確認。同樣包括SOAP中的
6、類型檢查,邏輯檢查以及確保返回的對象中包含的數(shù)據(jù)沒有不安全的東西。另外,程序還要確保格式的有效性,使用統(tǒng)一的錯誤報告而不是默認的錯誤報告,默認的錯誤報告通常會告訴用戶太多的信息。4、結束語隨著WebServices的越來越流行,WebService的安全性也越來越重要。分析可能產生攻擊和欺騙的手段,能更好地使我們及時采取措施來防止此類惡性攻擊和欺騙所帶來的嚴重后果。