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

主站蜘蛛池模板: 国产人成乱码视频免费观看| 中文字幕在线看视频一区二区三区| 黄色福利在线| 国产欧美日韩综合在线第一| 99re经典视频在线| 波多野结衣在线一区二区| 国内精品免费| 国产剧情一区二区| 91免费国产高清观看| 国产成人做受免费视频| 久久综合丝袜日本网| 国产91久久久久久| 婷婷六月综合网| 久久青草免费91线频观看不卡| 国产一区亚洲一区| 伊人查蕉在线观看国产精品| 午夜视频免费一区二区在线看| 日本色综合网| 日韩欧美在线观看| 114级毛片免费观看| 欧美三级视频网站| 亚洲天堂首页| 国产成人麻豆精品| Jizz国产色系免费| 国产精品一老牛影视频| 欧美精品一区二区三区中文字幕| 色婷婷综合在线| 日韩在线第三页| 91九色最新地址| 97青青青国产在线播放| 欧美日韩福利| 潮喷在线无码白浆| 日本三区视频| 国产精品福利在线观看无码卡| 久久香蕉欧美精品| 波多野结衣二区| 欧日韩在线不卡视频| 9966国产精品视频| 囯产av无码片毛片一级| 漂亮人妻被中出中文字幕久久 | 亚洲精品午夜无码电影网| 欧美在线综合视频| 2019国产在线| 亚洲天堂久久新| 欧美伊人色综合久久天天| 色久综合在线| 国产精品视频999| 国产一级毛片网站| av在线5g无码天天| 国产一区二区三区夜色| 久久精品人人做人人爽电影蜜月 | 久久成人18免费| 激情影院内射美女| 国产欧美日韩专区发布| 婷婷开心中文字幕| 亚洲视频无码| 欧美人在线一区二区三区| 99国产精品免费观看视频| 亚洲精品成人福利在线电影| a色毛片免费视频| 综合久久五月天| 中文字幕2区| 日本中文字幕久久网站| 夜夜操天天摸| 婷婷99视频精品全部在线观看| 亚洲成a人片7777| www欧美在线观看| 欧美亚洲一区二区三区在线| 伊人成人在线视频| 久久久久久久久18禁秘| 男女男精品视频| 亚洲日韩高清在线亚洲专区| 97se亚洲综合| 99久久精品免费看国产免费软件 | 亚洲福利网址| 亚洲欧美成人综合| 97青青青国产在线播放| 亚洲综合九九| 福利姬国产精品一区在线| 国产H片无码不卡在线视频| 国产一在线| 亚洲美女视频一区|