




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1網絡安全原理與應用(第三版)第五章Web安全5.1
Web安全概述5.1.1
Web服務Web是一個運行于Internet上的基本的client/server應用。Browser/Server,客戶為瀏覽器,服務器為WebServer;在Web應用中,WebServer后面常常與數據庫打交道服務器:規定了服務器的傳輸設定、信息傳輸格式及服務器的基本開放結構;客戶機:Web瀏覽器,用于向服務器發送資源索取請求,并將接收到的信息進行解碼和顯示;通信協議:Web瀏覽器與服務器之間遵照HTTP協議進行通信HPPT協議它定義了Web瀏覽器向Web服務器發送索取Web頁面請求的格式,以及Web頁面在Internet上的傳輸方式。HTTP工作過程:(1)Web服務器在80端口等候Web瀏覽器的請求;(2)Web瀏覽器通過三次握手與服務器建立起TCP/IP連接,然后Web瀏覽器向Web服務器發送索取頁面的請求:Get/dailynews.html(3)服務器以相應的文件為內容響應Web瀏覽器的請求5.1
Web安全概述5.1.2Web服務面臨的安全威脅(1)注入攻擊:如果應用程序沒有正確過濾用戶輸入,攻擊者可以輸入特定的SQL代碼來讀取、修改或刪除數據庫中的數據。常見的有SQL注入、NoSQL注入、OS注入、LDAP注入等。跨站腳本攻擊(XSS):當應用程序未對用戶輸入進行適當的過濾和轉義時,攻擊者可以在網頁中注入惡意腳本。當其他用戶訪問這個網頁時,這些腳本會在他們的瀏覽器中執行,可能導致用戶的敏感信息被竊取,或者被誘導執行某些操作。跨站請求偽造(CSRF):攻擊者通常會誘導用戶訪問一個惡意網站,然后利用用戶的身份在目標網站上執行敏感操作,如更改密碼、發送郵件等。5.1.2Web服務面臨的安全威脅(2)文件上傳漏洞:如果應用程序沒有對上傳的文件進行嚴格的檢查和過濾,攻擊者可以上傳惡意文件,例如可執行的腳本文件或包含惡意代碼的文件。這些文件可能會被執行,導致攻擊者能夠控制服務器或竊取敏感數據。反序列化漏洞:當應用程序從不受信任的來源接收序列化的數據時,如果沒有進行適當的驗證和過濾,攻擊者可以注入惡意對象,導致應用程序執行惡意代碼或泄露敏感數據。目錄遍歷漏洞:如果應用程序沒有對用戶請求的文件路徑進行嚴格的檢查和過濾,攻擊者可以通過構造特定的請求來訪問服務器上的敏感文件或執行惡意代碼。敏感信息泄露:如果應用程序在處理敏感數據時未采取適當的安全措施,如加密存儲、訪問控制等,可能導致敏感數據泄露,例如數據庫連接字符串、API密鑰等。5.1.2Web服務面臨的安全威脅(3)會話劫持:當攻擊者能夠竊取用戶的會話令牌時,他們可以利用這個令牌冒充用戶進行操作。會話劫持可以通過多種方式實現,例如嗅探網絡通信或利用應用程序的會話管理漏洞。文件包含漏洞:如果應用程序沒有對包含的文件進行嚴格的檢查和過濾,攻擊者可以指定包含惡意文件,導致應用程序執行惡意代碼或泄露敏感數據。代碼注入:當應用程序沒有對用戶輸入的數據進行適當的過濾和驗證時,攻擊者可以注入惡意代碼。例如,如果應用程序允許用戶上傳自定義腳本或配置文件,并且沒有進行適當的驗證和過濾,攻擊者可以上傳包含惡意代碼的文件,導致應用程序執行這些代碼。拒絕服務:拒絕服務攻擊是指故意導致應用程序的可用性降低。典型的示例是:讓Web應用程序負載過度,使其無法為普通用戶服務。5.2Web服務的安全問題5.2.1Web服務器的安全問題(1)未及時更新:Web服務器服務器和相關組件可能會有安全漏洞的存在。(2)不安全的配置:錯誤的配置選項和權限設置可能會導致Web服務器安全漏洞。(3)DDoS攻擊:分布式拒絕服務(DDoS)攻擊可能會導致服務器性能下降或完全不可用。(4)SQL注入和跨站腳本攻擊(5)未加密的數據傳輸:如果未正確配置SSL/TLS證書,敏感數據的傳輸可能會受到威脅。5.2.1Web服務器的安全問題(6)默認憑據和漏洞路徑:攻擊者可以嘗試使用默認的管理員憑據來入侵服務器,或者尋找已知的漏洞路徑。(7)不安全的插件和模塊:某些第三方插件和模塊可能存在安全漏洞,因此應該審查并定期更新它們。(8)訪問控制不當:不正確的訪問控制列表(ACL)和權限設置可能會導致不希望的訪問。(9)錯誤消息處理不當:默認的錯誤消息可能包含敏感信息,會泄露服務器配置和其他信息給潛在的攻擊者。(10)監控和日志不足:監控和日志記錄的不足可能會導致無法及時檢測和應對安全威脅。5.2.2ASP與Access的安全性ASP+Access解決方案的主要安全隱患來自Access數據庫的安全性,其次在于ASP網頁設計過程中的安全漏洞。1.Access數據庫的存儲隱患在ASP+Access應用系統中,如果獲得或者猜到Access數據庫的存儲路徑和數據庫名,則該數據庫就可以被下載到本地。2.Access數據庫的解密隱患由于Access數據庫的加密機制非常簡單,所以即使數據庫設置了密碼,解密也很容易。5.2.2ASP與Access的安全性3.源代碼的安全隱患由于ASP程序采用的是非編譯性語言,這大大降低了程序源代碼的安全性。任何人只要進入站點,就可以獲得源代碼,從而造成ASP應用程序源代碼的泄露。4.程序設計中的安全隱患ASP代碼利用表單(Form)實現與用戶交互的功能,而相應的內容會反映在瀏覽器的地址欄中,如果不采用適當的安全措施,只要記下這些內容,就可以繞過驗證直接進入某一頁面。5.2.3Java與JavaScript的安全性1.JavaScript的安全性問題(1)JavaScript可以欺騙用戶,將用戶本地硬盤上的文件上載到Internet上的任意主機。(2)JavaScript能獲得用戶本地硬盤上的目錄列表,這既代表對隱私的侵犯又代表安全風險。(3)JavaScript能監視用戶某段時間內訪問的所有網頁,捕捉URL并將它們傳到Internet上的某臺主機中。(4)JavaScript能夠觸發NetscapeNavigator送出電子郵件信息而不需經過用戶允許。這個技術可被用來獲得用戶的電子郵件地址。(5)嵌入網頁的JavaScript代碼是公開的,缺乏安全保密功能。5.2.3Java與JavaScript的安全性(1)跨站請求偽造攻擊(CSRF):攻擊者可能會利用JavaApplet的漏洞,通過偽造請求來執行惡意操作。例如,攻擊者可能會偽造一個表單提交請求,導致用戶在不知情的情況下執行某些敏感操作。(2)代碼注入攻擊:攻擊者可能會向JavaApplet注入惡意代碼,從而控制應用程序的行為。例如,攻擊者可能會注入惡意腳本,竊取用戶的敏感信息或執行其他惡意操作。(3)資源泄露:JavaApplet可能存在資源泄露漏洞,攻擊者可以利用這些漏洞獲取敏感信息,例如本地文件路徑、系統配置等。(4)權限提升:JavaApplet可能存在權限提升漏洞,攻擊者可以利用這些漏洞獲取更高的權限,從而執行敏感操作。5.2.4Cookie的安全性Cookies是網站服務器發送到用戶瀏覽器的文本文件,它可以記錄用戶的偏好、登錄信息、瀏覽習慣等。在瀏覽器第一次連接Web服務器時,由服務器端寫入到客戶端的系統中。當用戶再次訪問該網站時,網站可以通過讀取Cookies來識別用戶,從而提供個性化的服務或恢復用戶的瀏覽狀態。Cookies的技術使得網站能夠提供更加便捷和個性化的服務,改善HTTP協議的無狀態性,增強用戶體驗。
5.2.4Cookie的安全性Cookie可以記住用戶和跟蹤用戶的行為;可能影響用戶的隱私和安全網站和應用程序的開發人員應該遵循安全原則確保用戶數據的隱私和安全,并減少潛在的安全威脅。
如,不存儲隱私數據、敏感數據、安全標志;Cookie可以設置過期時間,防止長時間使用;避免第三方Cookie引入跟蹤和隱私問題。
無痕瀏覽器通常會阻止第三方Cookie和其他追蹤技術的使用,以防止第三方網站跟蹤用戶的行蹤。這些追蹤技術可以用于收集用戶的個人信息、搜索歷史和瀏覽習慣,從而侵犯用戶的隱私。5.3Web客戶端的安全惡意網站:用戶可能會訪問惡意網站,這些網站可能包含惡意代碼,例如惡意軟件、惡意腳本或釣魚攻擊,以嘗試竊取敏感信息或感染用戶的設備。插件和擴展:瀏覽器的插件和擴展可能存在安全漏洞,攻擊者可以利用這些漏洞來入侵用戶的系統或竊取用戶的數據。彈出窗口和廣告:惡意廣告和彈出窗口可能包含惡意代碼,通過點擊這些廣告或彈出窗口,用戶的設備可能受到威脅。5.3Web客戶端的安全跨站點腳本(XSS):XSS攻擊是一種常見的攻擊方式,攻擊者通過注入惡意腳本到網頁中,可以竊取用戶的Cookie、Session數據或其他敏感信息。跨站點請求偽造(CSRF):攻擊者可以誘使用戶在未經許可的情況下執行操作,例如更改賬戶設置或進行金融交易,因此用戶可能會受到損失。密碼管理問題:瀏覽器內置的密碼管理器可能不夠安全,存儲密碼的方式可能會受到威脅,如果瀏覽器密碼被泄露,用戶的賬戶可能會受到攻擊。不安全的擴展和附加組件:用戶安裝的瀏覽器擴展和附加組件可能不是完全可信的,一些惡意擴展可能會監視用戶的行為或操縱瀏覽器。5.3Web客戶端的安全不安全的連接:使用不安全的HTTP連接而不是加密的HTTPS連接可能會導致敏感數據在傳輸過程中被竊取。隱私問題:瀏覽器可能會收集用戶的瀏覽數據和個人信息,這些信息可能會被濫用,或者在不經用戶允許的情況下共享給第三方。瀏覽器漏洞:瀏覽器自身可能包含漏洞,攻擊者可以利用這些漏洞來執行惡意代碼或入侵用戶的系統。5.3.1防范惡意網頁惡意網頁是指嵌入了用JavaApplet、JavaScript或者ActiveX設計的非法惡意程序的網頁,通常用于攻擊用戶的計算機或竊取其敏感信息。當用戶瀏覽包含惡意代碼的網頁時,這些程序會利用瀏覽器的漏洞,進行修改用戶的注冊表、修改瀏覽器的默認設置、獲取用戶的個人資料、刪除硬盤文件、格式化硬盤等非法操作。5.3.1防范惡意網頁(1)增加安全意識,約束上網行為。(2)安裝防病毒軟件。(3)注冊表加鎖。(4)禁用遠程注冊表操作服務。(5)避免重蹈覆轍。(6)禁用ActiveX插件、控件和Java腳本。(7)使用更安全的瀏覽器。5.3.2隱私侵犯1.網上數據搜集的方法(1)通過用戶的IP地址進行。(2)通過Cookie獲得用戶的個人信息。(3)因特網服務提供商在搜集、下載、集中、整理和利用用戶個人隱私材料方面具有得天獨厚的有利條件(4)使用WWW的欺騙技術。(5)網絡詐騙郵件。5.3.2隱私侵犯2.網上數據搜集對個人隱私造成的侵害信息泄露風險:當個人數據被收集時,如果這些數據未得到適當的保護,可能會被泄露或被不法分子利用,從而造成財務或身份盜竊等危害。社交媒體隱私問題:在社交媒體上發布個人照片、位置信息、個人狀態等都可能被濫用,導致個人隱私受到侵犯。例如,住址泄露、私人照片被傳播等。個人權利侵犯:個人隱私是每個人的基本權利之一。在互聯網時代,也需要確保個人的隱私權利得到尊重和保護。沒有個人隱私的保護,將導致個人信息遭受不法分子的侵害。歧視風險:大數據可能會產生偏差和歧視。例如,大數據分析可能會偏向某個群體,導致對其他群體的忽視和排斥。安全隱患:大數據通常存儲在云端,由于網絡連接方式的特殊性,存在安全隱患。例如,大數據可能會被黑客攻擊,導致數據泄露或篡改。5.4SSL技術5.4.1SSL概述SSL(SecureSocketLayer)協議提供的安全特性:(1)利用認證技術識別身份。在客戶機向服務器可利用數字證書實現雙向身份證驗,但通常SSL協議只要求驗證服務器端。(2)利用加密技術保證通道的保密性。在客戶機和服務器進行數據交換之前,通過握手協議交換加密密鑰,傳輸的消息均為加密的消息。(3)利用數字簽名技術保證信息傳送的完整性。對相互傳送的數據進行Hash計算并加載數字簽名,從而保證信息的完整性。5.4.2SSL體系結構SSL位于TCP/IP協議棧中的傳輸層和應用層之間,利用TCP協議提供可靠的端到端安全服務。5.4.2SSL體系結構1.SSL協議的記錄層記錄層的功能是根據當前會話狀態給出參數,對當前連接中要傳輸的高層數據實施壓縮/解壓縮、加/解密、計算/校驗MAC等操作。5.4.2SSL體系結構2.握手協議握手協議(HandshakeProtocol)是SSL上層3個協議中最重要的一個,作用是產生會話的安全屬性。當客戶和服務器準備通信時,它們就要協商:身份驗證(可選)、協議版本、密鑰交換算法、壓縮算法、加密算法,并且生成密鑰和完成密鑰交換。5.4.2SSL體系結構3.改變加密規格協議改變加密規格協議的消息只包含一個字節,值為1。這條消息的唯一功能是使得延遲狀態改變為當前狀態,該消息更新了在這一連接中應用的密碼機制。4.報警協議報警協議的每個消息包含兩個字節。第一個字節表示報警的嚴重程度,可取值為1和2,分別表示警告(warning)和致命(fatal);第二個字節包含一個編碼,用于指明具體的警告類型。如,致命的警告消息有:unexpected_message、bad_record_mac、decompression_failure、handshake_failure、illegal_parameter;5.5Web服務器的安全配置5.5.1IIS的安裝與配置5.5.2IIS的安全配置方法HTTPS使用HTTPS時,下列的元素將被加密:請求文件的URL文件的內容瀏覽器表格(用戶填寫的)BS及SB的cookiesHTTP頭的內容HTTPS的相關文件:RFC2818IIS配置HTTPS第一步:獲取證書為Web服務器配置SSL要在IIS中啟用SSL,首先必須獲得用于加密和解密通過網絡傳輸的信息的證書。IIS具有自己的證書請求工具,您可以使用此工具向證書頒發機構發送證書請求。導入證書到控制臺添加HTTPS綁定,包括(類型,IP,端口,域名,SSL證書)通過https://訪問網站5.6SQL注入攻擊5.6.1SQL注入攻擊原理SQL注入(StructuredQueryLanguageInjection)是指攻擊者利用web應用程序對用戶輸入數據的合法性不作檢測或檢測不嚴格的弱點,從客戶端提交特殊的數據庫查詢代碼,欺騙數據庫服務器執行非授權的任意查詢,從而使服務端數據庫泄露敏感信息,甚至利用數據庫注入攻擊獲取高權限(如管理員賬號)執行危險操作實現入侵。5.6.1SQL注入攻擊原理SQL語句是一種用于與數據庫交互的結構化查詢語言。如:當用戶執行登錄操作時,實際上向后端發送了一條SQL請求以確認身份。SQL注入漏洞的本質:后端代碼執行過程中,將用戶輸入的數據也當作代碼來執行,違背代碼和數據分離原則SQL注入漏洞有兩個關鍵條件:用戶能控制輸入的內容;
后端對前端傳遞過來的數據沒有過濾,或過濾不嚴謹;5.6.1SQL注入攻擊原理步驟:攻擊者在Web表單(POST、GET)、域名或URL頁面請求中插入針對性構造的特殊SQL命令;Web服務器缺少對用戶輸入的合法性判斷;服務器端執行含有惡意SQL代碼的請求;執行未經授權的數據庫操作,如增加、刪除、查詢、修改操作如用戶輸入:username='OR'1'='1'--和password='OR'1'='1'--,在這個情況下,構造的SQL查詢語句將變成:SELECT*FROMusersWHEREusername=''OR'1'='1'--'ANDpassword=''OR'1'='1'SQL注入攻擊危害(1)數據庫數據泄露:攻擊者可以通過注入惡意SQL語句來訪問、檢索或刪除數據庫中的敏感信息。(2)身份驗證繞過:攻擊者可以利用SQL注入來繞過身份驗證,以管理員或其他特權用戶的身份執行操作。(3)數據篡改:攻擊者可以修改數據庫中的數據,從而對應用程序的正常功能造成破壞。(4)拒絕服務攻擊:通過執行惡意的SQL查詢,攻擊者可以耗盡數據庫資源,導致拒絕服務。SQL注入漏洞檢測技術主要分為白盒和黑盒兩種測試技術白盒測試技術需要獲取源代碼來發掘程序代碼中可能存在的SQL注入漏洞,常用的技術包括約束生成和求解、符號執行、數據流分析等方法。黑盒技術無需獲取源代碼,通過使用自動化的SQL注入掃描器發現漏洞,是使用較為廣泛的方法。自動的SQL注入工具:Sqlmap,Pangolin,Havij,SQLIer,SQLID……為了保障網絡安全,建議定期進行安全漏洞檢測和修復。但切記使用這些工具時,必須遵守相關法律法規和道德標準,不得用于非法活動。預防SQL注入攻擊使用參數化的SQL查詢語句,確保用戶輸入的數據不會被解釋為SQL代碼的一部分。如:SELECT*FROMEmployeesWHEREDepartment=@Department在程序中對用戶輸入進行有效的驗證和過濾,只允許預期的數據類型和格式。例如,限制輸入長度、使用正則表達式驗證等。給予數據庫用戶最小必要的權限,限制其對數據庫的訪問范圍。不要向用戶顯示詳細的錯誤信息,特別是關于數據庫結構和查詢的信息。開發人員應采用安全編碼實踐,避免拼接字符串來構建SQL查詢。檢測和阻止SQL注入攻擊使用Web應用程序防火墻(WAF)來檢測和阻止可能的SQL注入攻擊;針對SQL查詢的執行引入異常處理機制,以捕獲和處理執行過程中的異常情況,防止詳細錯誤信息泄露給攻擊者;對應用程序進行定期的安全審計,包括對數據庫查詢的檢查,以發現和修復潛在的SQL注入漏洞。;使用自動化的漏洞掃描工具來定期掃描應用程序,以識別潛在的SQL注入漏洞;及時應用數據庫系統和應用程序框架的安全更新和修補,以防止已知漏洞被利用。5.6.2SQL注入攻擊方法第一步:SQL注入點探測。第二步:收集后臺數據庫信息。第三步:猜解后端數據庫結構。第四步:尋找Web后臺管理入口或其他敏感信息。5.6.3SQL注入攻擊檢測技術(1)基于規則匹配的檢測方法基于規則匹配的檢測方法是一種用于檢測SQL注入攻擊的常用技術。這種方法主要通過匹配已知的SQL注入模式或特征來檢測潛在的注入點。基于規則匹配的檢測方法具有簡單、快速的特點,但也有一些局限性。例如,它可能無法檢測到未知的注入模式或復雜的注入技巧。此外,需要提前構建知識規則庫。如果規則定義不當或不完整,可能會產生誤報或漏報的情況。5.6.3SQL注入攻擊檢測技術(2)基于網絡爬蟲技術的檢測網絡爬蟲是一種自動的訪問網頁元素程序。基于爬蟲的SQL注入自動化檢測的思想是將網絡爬蟲技術和Fuzzing技術結合,實現自動化與智能化SQL注入檢測。基于網絡爬蟲技術的SQL注入漏洞檢測具有自動化、高效的特點,能夠快速檢測出潛在的注入點。然而,這種方法也可能存在誤報或漏報的情況,并且對于復雜的注入技巧或隱藏的注入點可能無法檢測到。5.6.3SQL注入攻擊檢測技術(3)基于動態分析的檢測方法基于動態分析的SQL注入漏洞檢測是一種通過觀察應用程序在運行時的行為來檢測SQL注入漏洞的方法。這種方法通過執行一系列的輸入并觀察應用程序的響應來判斷是否存在SQL注入漏洞。基于動態分析的SQL注入漏洞檢測能夠檢測到隱藏的注入點,并且能夠根據應用程序的實際行為進行準確的判斷。然而,這種方法需要執行應用程序并觀察其響應,因此可能需要較長的時間和資源。此外,對于一些復雜的注入技巧或隱藏的注入點,可能仍然存在誤報或漏報的情況。5.6.3SQL注入攻擊檢測技術(4)基于污點分析技術的漏洞檢測方法基于污點分析技術的SQL注入漏洞檢測方法是一種通過追蹤應用程序中數據流來檢測SQL注入漏洞的方法。這種方法利用污點跟蹤技術,標記應用程序中的輸入數據,并觀察這些數據在應用程序中的傳播和變化。基于污點分析技術的SQL注入漏洞檢測方法能夠準確地檢測到潛在的注入點,并給出詳細的上下文信息。然而,這種方法需要深入了解應用程序的數據流和內部結構,并且需要仔細配置和調整以獲得最佳效果。此外,對于一些復雜的注入技巧或隱藏的注入點,可能仍然存在誤報或漏報的情況。5.6.4常見的SQL注入攻擊方式1.聯合查詢注入在UNION操作中注入額外的SQL語句,將結果合并到原始查詢中,從而獲取未經授權的數據例如:應用程序的查詢可能類似于:SELECTproduct_id,product_name,priceFROMproductsWHEREcategory_id='用戶輸入';攻擊者可能嘗試構造一個惡意的輸入,例如:1'UNIONSELECT1,username,passwordFROMusers;--,SELECTproduct_id,product_name,priceFROMproductsWHEREcategory_id='1'UNIONSELECT1,username,passwordFROMusers;--'5.6.4常見的SQL注入攻擊方式2.盲注(1)布爾盲注
當Web頁面僅返回True和False(布爾值),那么就可以利用布爾盲注,根據頁面返回的True或者是False判斷SQL語句的猜解是否正確,從而獲得后端數據庫的信息。布爾盲注一般適用于頁面沒有回顯字段(不支持聯合查詢),且web頁面返回True或者false。構造SQL語句,利用and,or等關鍵字使其后的語句的值為True或False,從而使web頁面返回True或False,達到注入的目的來獲取信息
5.6.4常見的SQL注入攻擊方式2.盲注(2)時間盲注時間盲注又稱延遲注入,它提交對執行時間敏感的函數sql語句,通過執行時間的長短來判斷是否執行成功,假設一個簡單的用戶身份驗證查詢語句:SELECT*FROMusersWHEREusername='輸入的用戶名'ANDpassword='輸入的密碼’;攻擊者可能嘗試在用戶名字段中輸入:admin'ANDIF(1=1,SLEEP(5),0)--這個查詢時出現5秒的延遲,攻擊者可以確定條件為真,即用戶名是admin
5.6.4常見的SQL注入攻擊方式3.報錯注入構造惡意的SQL,觸發數據庫報錯,而在報錯信息中就存在著我們想要的信息假設一個簡單的用戶身份驗證查詢語句:Floor()報錯注入例如:
SELECT*FROMproductsWHEREprice=FLOOR((用戶輸入的價格));構造:SELECT*FROMproductsWHEREprice=FLOOR((1);SELECT*FROMusersWHEREusername='admin'--));updatexml報錯注入利用數據庫的updatexml函數來導致錯誤,以獲取敏感信息。這個函數通常用于更新XML字段中的數據。updatexml(xml_document,xpath_string,new_value)extractvalue報錯注入extractvalue(xml_document,xpath_string),第一個參數可以傳入目標xml文檔,第二個參數是用Xpath路徑法表示的查找路徑,作用是從目標XML中返回包含所查詢值的字符串。例如:語句SELECTExtractValue('<a><b>ccc</b></a>','/a/b');的執行結果為:ccc。報錯注入的用法,與updatexml相似5.6.4常見的SQL注入攻擊方式4.堆疊注入將語句堆疊在一起進行查詢。mysql_multi_query()支持多條sql語句同時執行,語句間以分號(;)分隔,在;結束一個SQL語句后繼續構造下一條語句,兩條語句會一起執行,這就是堆疊注入例如:SELECT*FROMusersWHEREusername='用戶輸入1'ANDpassword='用戶輸入2’,構造:
SELECT*FROMusersWHEREusername='';INSERTINTOusers(username,password)VALUES('attacker','hacked')--'ANDpassword='';5.6.5防范SQL注入關鍵措施1.參數化查詢:使用參數化查詢語句而不是字符串拼接。這樣可以確保用戶輸入的數據不會被解釋為SQL代碼的一部分,而是作為參數傳遞到查詢中。2.輸入驗證和過濾:對用戶輸入進行有效的驗證和過濾,確保只允許預期的數據類型和格式。使用白名單驗證來限制用戶輸入的字符集,拒絕不合法的輸入。3.ORM(對象關系映射)使用ORM庫,它們通常會自動處理參數化查詢,減少手動拼接SQL語句的機會。5.6.5防范SQL注入關鍵措施4.最小權限原則:為數據庫用戶分配最小必要的權限,以降低潛在攻擊者的影響范圍。5.錯誤處理在生產環境中限制詳細錯誤信息的顯示,確保不向用戶泄露敏感的數據庫結構和查詢信息。將錯誤信息記錄到日志中,以便審計和調試。6.使用存儲過程將SQL邏輯封裝在存儲過程中,這樣可以減少直接執行SQL查詢的機會。5.6.5防范SQL注入關鍵措施7.Web應用程序防火墻(WAF)使用WAF來檢測和防御SQL注入攻擊。WAF可以根據已知的攻擊模式和特征來攔截潛在的注入嘗試。8.會話管理和憑證存儲使用安全的會話管理和憑證存儲機制,確保用戶身份驗證和授權信息的安全性,防止攻擊者通過SQL注入繞過身份驗證。9.定期審計和漏洞掃描定期審計應用程序的代碼和數據庫訪問邏輯,使用漏洞掃描工具來發現潛在的SQL注入漏洞。10.安全編碼實踐在開發過程中采用安全編碼實踐,避免拼接字符串來構建SQL查詢。使用框架和庫,以減少手動處理SQL查詢的機會。5.7跨站腳本攻擊(XSS)XSS(Cross-SiteScripting)攻擊稱為跨站腳本攻擊。是指攻擊者在Web頁面中提交惡意腳本,當用戶瀏覽包含惡意腳本的頁面時,在不知情的情況下執行該腳本,導致被攻擊的行為。攻擊成功后,攻擊者可能得到更高的權限(如執行一些操作)、保密的網頁信息、會話和Cookie等各種內容。與SQL注入類似,XSS也是利用提交惡意信息來實現攻擊的行為。但是XSS一般提交的是Javascript腳本,運行在Web前端,也就是用戶的瀏覽器;而SQL注入提交的SQL指令是在后臺數據庫服務器執行。所以兩者攻擊的對象是不一樣。5.7.1XSS分類1.反射型XSS反射型XSS中,攻擊者通過構造惡意的URL,將腳本注入到用戶的瀏覽器中,然后由瀏覽器執行。該攻擊類型得名于惡意腳本“反射”到用戶的瀏覽器,而不是存儲在目標網站的數據庫中,又稱非持續性XSS。5.7.1XSS分類2存儲型XSS存儲型XSS,又稱持續性跨站腳本攻擊。在此類攻擊中,腳本被存儲在目標網站的數據庫中,然后在用戶請求頁面時從數據庫中檢索并傳遞給用戶的瀏覽器執行。5.7.1XSS分類3.DOM型XS
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 自我反思2025年公共衛生執業醫師考試試題及答案
- 網絡規劃設計師知識庫與試題及答案
- 激光設備的保護與使用技巧試題及答案
- 系統規劃與管理師答題要點指導試題及答案
- 江蘇信息單招試題及答案
- 激光陶瓷材料的加工技術分析試題及答案
- 系統化衛生管理考試試題及答案
- 線上學習文化產業管理試題及答案
- 藥物質量控制與管理標準試題及答案
- 色環電阻測試題及答案
- 專題26 實驗與探究 十年(2015 2024)高考生物真題分類匯編(全國) (解析版)
- 關于對全市醫療質量和醫療安全檢查情況的通報
- 辦公5s管理內容和標準
- 有限空間安全技術交底
- 2024年土地流轉的合同模板
- 2024年第三屆浙江技能大賽(電工賽項)理論考試題庫(含答案)
- 2024年度-工程造價培訓課件全新
- 高標準農田跟蹤審計、工程中間計量、變更價格調整及竣工結算審核項目投標方案(技術方案)
- 行政事務試題庫及答案
- 教師備課教案模板
- 2023中央空調智能化控制技術規范
評論
0/150
提交評論