人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統 > 網絡技術教程 > 詳細頁面

防范SQL指令植入式攻擊(1)

防范SQL指令植入式攻擊(1)

更新時間:2021-10-08 文章作者:未知 信息來源:網絡 閱讀次數:

網絡技術是從1990年代中期發展起來的新技術,它把互聯網上分散的資源融為有機整體,實現資源的全面共享和有機協作,使人們能夠透明地使用資源的整體能力并按需獲取信息。資源包括高性能計算機、存儲資源、數據資源、信息資源、知識資源、專家資源、大型數據庫、網絡、傳感器等。 當前的互聯網只限于信息共享,網絡則被認為是互聯網發展的第三階段。
        什么是SQL 指令植入式攻擊?

在設計或者維護 Web 網站時,你也許擔心它們會受到某些卑鄙用戶的惡意攻擊。的確,如今的 Web 網站開發者們針對其站點所在操作系統平臺或Web 服務器的安全性而展開的討論實在太多了。不錯,IIS 服務器的安全漏洞可能招致惡意攻擊;但你的安全檢查清單不應該僅僅有 IIS 安全性這一條。有些代碼,它們通常是專門為數據驅動(data-driven) 的 Web 網站而設計的,實際上往往同其它 IIS 漏洞一樣存在嚴重的安全隱患。這些潛伏于代碼中的安全隱患就有可能被稱為“SQL 指令植入式攻擊” (SQL injection) 的手段所利用而導致服務器受到攻擊。

SQL 指令植入式攻擊技術使得攻擊者能夠利用 Web 應用程序中某些疏于防范的輸入機會動態生成特殊的 SQL 指令語句。舉一個常見的例子:

某 Web 網站采用表單來收集訪問者的用戶名和密碼以確認他有足夠權限訪問某些保密信息,然后該表單被發送到 Web 服務器進行處理。接下來,服務器端的ASP 腳本根據表單提供的信息生成 SQL 指令語句提交到 SQL 服務器,并通過分析 SQL 服務器的返回結果來判斷該用戶名/密碼組合是否有效。

為了實現這樣的功能,Web 程序員可能會設計兩個頁面:一個 HTML 頁面 (Login.htm) 用于登錄,另一個ASP 頁面 (ExecLogin.asp) 用于驗證用戶權限(即向數據庫查詢用戶名/密碼組合是否存在)。具體代碼可能象這樣:

Login.htm (HTML 頁面)

代碼:<form action="ExecLogin.asp" method="post"> Username: <input type="text" name="txtUsername"><br> Password: <input type="password" name="txtPassword"><br> <input type="submit"> </form> 


ExecLogin.asp (ASP 頁面)
代碼:<% Dim p_strUsername, p_strPassword, objRS, strSQL p_strUsername = Request.Form("txtUsername") p_strPassword = Request.Form("txtPassword") strSQL = "SELECT * FROM tblUsers " & _ "WHERE Username='" & p_strUsername & _ "' and Password='" & p_strPassword & "'" Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." If (objRS.EOF) Then Response.Write "Invalid login." Else Response.Write "You are logged in as " & objRS("Username") End If Set objRS = Nothing %> 


乍一看,ExecLogin.asp 的代碼似乎沒有任何安全漏洞,因為用戶如果不給出有效的用戶名/密碼組合就無法登錄。然而,這段代碼偏偏不安全,而且它正是SQL 指令植入式攻擊的理想目標。具體而言,設計者把用戶的輸入直接用于構建SQL 指令,從而使攻擊者能夠自行決定即將被執行的 SQL 指令。例如:攻擊者可能會在表單的用戶名或密碼欄中輸入包含“ or ”和“=” 等特殊字符。于是,提交給數據庫的 SQL 指令就可能是:
代碼:SELECT * FROM tblUsers WHERE Username='' or ''='' and Password = '' or ''='' 


這樣,SQL 服務器將返回 tblUsers 表格中的所有記錄,而 ASP 腳本將會因此而誤認為攻擊者的輸入符合 tblUsers 表格中的第一條記錄,從而允許攻擊者以該用戶的名義登入網站。

SQL 指令植入式攻擊還有另一種形式,它發生在 ASP 服務器根據 querystring 參數動態生成網頁時。這里有一個例子,此 ASP 頁面從 URL 中提取出 querystring 參數中的 ID 值,然后根據 ID 值動態生成后繼頁面:
代碼:<% Dim p_lngID, objRS, strSQL p_lngID = Request("ID") strSQL = "SELECT * FROM tblArticles WHERE ID=" & p_lngID Set objRS = Server.CreateObject("ADODB.Recordset") objRS.Open strSQL, "DSN=..." If (Not objRS.EOF) Then Response.Write objRS("ArticleContent") Set objRS = Nothing %> 


在一般情況下,此 ASP 腳本能夠顯示具有特定 ID 值的文章的內容,而 ID 值是由 URL 中的 querystring 參數指定的。例如:當URL為 http://www.example.com/Article.asp?ID=1055 時,ASP 就會根據 ID 為 1055 的文章提供的內容生成頁面。

如同前述登錄頁面的例子一樣,此段代碼也向SQL 指令植入式攻擊敞開了大門。某些惡意用戶可能會把 querystring 中的文章 ID 值偷換為“0 or 1=1”等內容(也就是說,把 URL 換成 http://www.example.com/Article.asp?ID=0 or 1=1) 從而誘使 ASP 腳本生成不安全的 SQL 指令如:
代碼:SELECT * FROM tblArticles WHERE ID=0 or 1=1 

于是,數據庫將會返回所有文章的內容。

當然了,本例服務器所受的攻擊不一定會引起什么嚴重后果。可是,攻擊者卻可能變本加厲,比如用同樣的手段發送 DELETE 等 SQL 指令。這只需要簡單地修改前述 URL 中的 querystring 參數就可以了!例如:任何人都可以通過 “http://www.example.com/Article.asp?ID=1055; DELETE FROM tblArticles ” 之類的 URL 來訪問 Web 網站。


網絡的神奇作用吸引著越來越多的用戶加入其中,正因如此,網絡的承受能力也面臨著越來越嚴峻的考驗―從硬件上、軟件上、所用標準上......,各項技術都需要適時應勢,對應發展,這正是網絡迅速走向進步的催化劑。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 阜平县| 杭锦后旗| 银川市| 当雄县| 调兵山市| 隆子县| 洛隆县| 兰州市| 锡林郭勒盟| 孟村| 华坪县| 伊川县| 怀仁县| 黑水县| 盘锦市| 彰化县| 南阳市| 泽普县| 汝南县| 万山特区| 随州市| 宁南县| 华安县| 柳江县| 桃园县| 兴城市| 永年县| 延安市| 甘德县| 满城县| 绿春县| 钟山县| 盘锦市| 威宁| 固始县| 渑池县| 三门县| 南部县| 普宁市| 辽中县| 康乐县|