大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 网络安全 -> 防范措施 -> ASP.NET中如何防範SQL注入式攻擊

ASP.NET中如何防範SQL注入式攻擊

时间: 2021-07-31 作者:daque

ASP.NET中如何防範SQL注入式攻擊一、什麼是sql注入式攻擊? 所謂sql注入式攻擊,即是攻擊者把sql吩咐插入到web表單的輸入域或頁面請求的查詢字符串,欺騙伺服器執行惡意的sql吩咐。在某些表單中,用戶輸入的內容径直用來構造(大概影響)動態sql吩咐,或作為存儲過程的輸入參數,這類表單特別简单遭到sql注入式攻擊。常見的sql注入式攻擊過程類如: 一 某個asp.net web應用有一個登錄頁面,這個登錄頁面遏制著用戶能否有權訪問應用,它诉求用戶輸入一個名稱和口令。 二 登錄頁面中輸入的內容將径直用來構造動態的sql吩咐,大概径直用作存儲過程的參數。底下是asp.net應用構造查詢的一個例子: system.text.stringbuilder query = new system.text.stringbuilder("select * from users where login = ").append(txtlogin.text).append(" and password=").append(txtpassword.text).append("");三 攻擊者在用戶名字和口令輸入框中輸入"或1=1"之類的內容。 四 用戶輸入的內容提交給伺服器之後,伺服器運行上头的asp.net代碼構造出查詢用戶的sql吩咐,但由於攻擊者輸入的內容特殊特出,以是最後获得的sql吩咐變成:select * from users where login = or 1=1 and password = or 1=1。 伍 伺服器執行查詢或存儲過程,將用戶輸入的身份資訊和伺服器中生存的身份資訊進行對比。 六 由於sql吩咐實際上已被注入式攻擊窜改,已經不许真实驗證用戶身份,以是系統會錯誤地授權給攻擊者。 即使攻擊者领会應用會將表單中輸入的內容径直用於驗證身份的查詢,他就會嘗試輸入某些特出的sql字符串窜改查詢改變其原來的功效,欺騙系統赋予訪問許可權。 系統環境各别,攻擊者大概形成的損害也各别,這重要由應用訪問數據庫的安定許可權決定。即使用戶的帳戶具备处置員或其余比較高級的許可權,攻擊者就大概對數據庫的表執行各種他想要做的操纵,囊括增添、刪除或革新數據,以至大概径直刪除表。 二、怎样防範? 幸亏要提防asp.net應用被sql注入式攻擊闖入並不是一件特別困難的工作,只有在运用表單輸入的內容構造sql吩咐之前,把一切輸入內容過濾一番就不妨了。過濾輸入內容不妨按多種办法進行。 一 對於動態構造sql查詢的場合,不妨运用底下的技術: 第一:替換單引號,即把一切單獨出現的單引號改成兩個單引號,提防攻擊者窜改sql吩咐的含義。再來看前方的例子,“select * from users where login = or 1=1 and password = or 1=1”顯然會获得與“select * from users where login = or 1=1 and password = or 1=1”各别的結果。 第二:刪除用戶輸入內容中的一切連字符,提防攻擊者構造出類如“select * from users where login = mas -- and password =”之類的查詢,因為這類查詢的後半局部已經被註釋掉,不复灵验,攻擊者只有领会一個正当的用戶登錄名稱,基础不须要领会用戶的口令就不妨順利獲得訪問許可權。 第三:對於用來執行查詢的數據庫帳戶,控制其許可權。用各别的用戶帳戶執行查詢、插入、革新、刪除操纵。由於隔離了各别帳戶可執行的操纵,所以也就提防了本来用於執行select吩咐的场合卻被用於執行insert、update或delete吩咐。 二 用存儲過程來執行一切的查詢。sql參數的傳遞办法將提防攻擊者运用單引號和連字符實施攻擊。其余,它還使得數據庫許可權不妨控制到只允許一定的存儲過程執行,一切的用戶輸入必須遵從被調用的存儲過程的安定左右文,這樣就很難再發生注入式攻擊了。 三 限製表單或查詢字符串輸入的長度。即使用戶的登錄名字最多惟有10個字符,那麼不要認可表單中輸入的10個之上的字符,這將大大减少攻擊者在sql吩咐中插入无益代碼的難度。 四 檢查用戶輸入的正当性,確信輸入的內容只包括正当的數據。數據檢查應當在客戶端和伺服器端都執行——之以是要執行伺服器端驗證,是為了彌補客戶端驗證機制薄弱的安定性。 在客戶端,攻擊者实足有大概獲得網頁的源代碼,窜改驗證正当性的腳本(大概径直刪除腳本),然後將不法內容通過窜改後的表單提交給伺服器。所以,要保證驗證操纵確實已經執行,独一的辦法即是在伺服器端也執行驗證。你不妨运用許多內建的驗證對象,比方regularexpressionvalidator,它們能夠自動天生驗證用的客戶端腳本,當然你也不妨插入伺服器端的本领調用。即使找不到現成的驗證對象,你不妨通過customvalidator本人創建一個。 伍 將用戶登錄名稱、口令等數據加密生存。加密用戶輸入的數據,然後再將它與數據庫中生存的數據比較,這相當於對用戶輸入的數據進行了“杀菌”處理,用戶輸入的數據不复對數據庫有任何特出的意義,從而也就提防了攻擊者注入sql吩咐。system.web.security.formsauthentication類有一個hashpasswordforstoringinconfigfile,特殊適合於對輸入數據進行杀菌處理。 六 檢查索取數據的查詢所归来的記錄數量。即使程式只诉求归来一個記錄,但實際归来的記錄卻超過一条龙

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.