999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

用存儲過程防范SQL Injection的技術分析

2010-12-31 00:00:00童曉冬
商場現代化 2010年12期

[摘要]隨著網絡應用的發展日益突出,在各式各樣的網絡攻擊中,SQL Injection是最為常用的攻擊手段,攻擊者利用可能引發錯誤的SQL語句使網頁或程序出現異常后,獲取信息分析網站結構組成從而控制網站。存儲過程是一組編譯在單個執行計劃中的SQL 語句,存儲過程不僅能提高運行效率,也是防范SQL Injection攻擊的有效手段之一。

[關鍵詞]存儲過程 SQL Injection

Internet站點設計從以往基于靜態HTML 的技術發展到以數據庫為中心的高度交互的Web應用程序。由于數據庫的存在,攻擊者在對網站的數據庫攻擊中SQL Injection是最為常用的手法,它是利用SQL命令引發數據庫的錯誤信息的攻擊手段。本文在一定程度上能解決注入攻擊的安全問題。存儲過程是 SQL 語句和可選控制流語句的預編譯集合,它執行效率比動態創建的SQL語句效率要高的多,這是程序員使用存儲過程首先想到的主要功能,但存儲過程對于程序安全性和對SQL Injection防范作用同樣意義重大。

一、SQL Injection原理分析

SQL Injection是在代碼中直接將未經過過濾和檢測的情況下直接引入到了SQL語句中,攻擊者只要了解程序語句、數據庫結構,就可輕易寫出帶有破壞性或其它目的的SQL語句來,從而控制整個主機。SQL Injection攻擊的方法還有很多,防止攻擊的通常方法是程序員編寫函數代碼嚴格過濾產生執行異常或邏輯錯誤的字符,但攻擊者SQL Injection規避入侵檢測的技術也花樣翻新,攻擊者運用編碼技術繞過ASCII編碼,如or 1=1可以用%6f%72%20%31%3d%31代替,對于防范此類攻擊會增加難度,同時程序執行效率也會降低并影響到一些正常的內容輸入。

二、存儲過程概述

存儲過程是一組編譯在單個執行計劃中的 Transact-SQL 語句,存儲過程是 SQL 語句和可選控制流語句的預編譯集合,以一個名稱存儲并作為一個單元處理。存儲過程存儲在數據庫內,可由應用程序通過一個調用執行,而且允許用戶聲明變量、有條件執行以及其它強大的編程功能。在一個存儲過程內,可以設計、編碼和測試執行某個常用任務所需的 SQL 語句和邏輯,之后每個需要執行該任務的應用程序只須執行此存儲過程即可。如果某操作需要大量 Transact-SQL 代碼或需重復執行,存儲過程將比 Transact-SQL 批代碼的執行要快。一個需要數百行 Transact-SQL 代碼的操作由一條執行過程代碼的單獨語句就可實現,而不需要在網絡中發送數百行代碼。

三、存儲過程安全防范應用

以身份驗證頁面為例,在SQL Server2000中編寫存儲過程:

CREATE PROCEDURE da_login @username varchar(16),@password varchar(50) AS

SET NOCOUNT ON

SELECT* FROM users WHERE username=@username and password=@password

GO

該存儲過程包含兩個輸入參數@username和@password,數據類型為varchar,設用戶提交的username為李四’--,password為321。如果不用存儲過程,驗證SQL語句為:select * from users where username=’李四’--‘and password=’321’,密碼后面語句被解釋為注釋語句,這樣只對用戶名進行驗證,而不對密碼進行驗證。存儲過程參數用于在存儲過程和調用存儲過程的應用程序或工具之間交換數據:輸入參數允許調用方將數據值傳遞到存儲過程,輸出參數允許存儲過程將數據值或游標變量傳遞回調用方,他們被預先作為獨立的數據體與SQL語句交互,上例使用da_login存儲過程驗證:李四’--,作為一個標準varchar的字符串傳遞給參數@username,即username的值為李四’--;321作為一個標準varchar的字符串傳遞給參數@password,即password的值為321,兩個參數之間不會進行字符串重組,即存儲過程里的SQL查詢語句不會組合為select * from users where username=’李四’- -‘and password=’321’,因而da_login存儲過程驗證是對用戶名和密碼的完整性驗證,是有效地身份驗證,在高效能訪問數據庫的同時,解決了SQL Injection攻擊。

四、結論

在編寫帶有數據庫的Web應用程序中,使用存儲過程能極大地提高程序執行效率,利用存儲過程中參數的整體一致性,將用戶交互的數據作為參數傳遞給存儲過程中的Transact-SQL語句,不會導致語句執行異常,不僅擴展了數據錄入內容的范圍、減少了代碼編寫的難度,也可有效地防止SQL注入攻擊帶來的危害。在應用程序中使用存儲過程并且配合完善的錯誤捕獲功能,可以開發出高效健壯的網絡應用程序,減少攻擊帶來的損失,保證網絡服務持續有效地運行。

參考文獻:

[1]羅曉沛,侯炳輝.系統分析師教程[M].北京:清華大學出版社,2003

[2]張友生,徐鋒.系統分析師技術指南[M].北京:清華大學出版社,2004

[3]李建忠.Microsoft .NET框架程序設計[M].北京:清華大學出版社,2003

[4]桂思強.ASP.net與數據庫程序設計[M].北京:中國鐵道出版社,2002

[5]微軟公司.ASP.NET安全應用程序開發[M]. 北京:清華大學出版社,2003

主站蜘蛛池模板: 狠狠躁天天躁夜夜躁婷婷| 少妇极品熟妇人妻专区视频| 91久草视频| 国产亚洲欧美在线人成aaaa| 久久国产精品夜色| 国内毛片视频| 久久国产成人精品国产成人亚洲| 国产精品九九视频| 色综合天天娱乐综合网| 国产一二三区视频| 亚洲成a人片7777| 国产成人高清精品免费| 九九久久精品免费观看| 萌白酱国产一区二区| 亚洲人精品亚洲人成在线| 亚洲人成电影在线播放| 小说 亚洲 无码 精品| 国产成年女人特黄特色大片免费| 亚洲国产天堂久久九九九| 综合色区亚洲熟妇在线| 久久激情影院| 97se综合| 永久成人无码激情视频免费| 亚洲第一香蕉视频| 国产一区三区二区中文在线| 手机在线免费毛片| 亚洲电影天堂在线国语对白| 国产精品久线在线观看| 国产午夜在线观看视频| 亚洲精品视频免费| 亚洲欧美成人综合| 99re热精品视频国产免费| 99久久这里只精品麻豆| 无遮挡国产高潮视频免费观看| 免费毛片在线| 19国产精品麻豆免费观看| 免费在线色| 手机成人午夜在线视频| 高清欧美性猛交XXXX黑人猛交| 国产亚洲精品精品精品| 青草娱乐极品免费视频| 综合久久五月天| 97久久超碰极品视觉盛宴| 99人妻碰碰碰久久久久禁片| 欧美色丁香| 天天婬欲婬香婬色婬视频播放| 国产成年女人特黄特色毛片免| 高清免费毛片| 国产精品女熟高潮视频| 亚洲精品无码在线播放网站| 色天天综合久久久久综合片| 夜精品a一区二区三区| 婷婷99视频精品全部在线观看| 在线观看欧美精品二区| 久久这里只有精品8| 欧美乱妇高清无乱码免费| 麻豆国产在线观看一区二区 | 九九久久99精品| 国产成人麻豆精品| 丰满人妻中出白浆| 2020极品精品国产 | 国产精品理论片| …亚洲 欧洲 另类 春色| 亚洲国产高清精品线久久| 成人永久免费A∨一级在线播放| 国产91丝袜在线播放动漫| 成人国产一区二区三区| 精品无码视频在线观看| 日韩在线第三页| 欧美在线精品一区二区三区| 午夜性爽视频男人的天堂| 国产成人1024精品| 欧美成人亚洲综合精品欧美激情| 国产精品亚洲专区一区| 奇米影视狠狠精品7777| 广东一级毛片| 亚洲中文字幕在线一区播放| 亚洲欧洲国产成人综合不卡| 欧美日本在线一区二区三区| 国产精品亚洲专区一区| 农村乱人伦一区二区| 丁香婷婷在线视频|