偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

“SQL注入”的前世今生和防御思路

安全
“SQL1注入”流行之前,緩沖區(qū)溢出2是最有效的黑客滲透方法,但經(jīng)歷了一些嚴(yán)重事件后(如:Code Red、Nimda、SQL Slammer),現(xiàn)在很多網(wǎng)絡(luò)管理員的安全意識(shí)增強(qiáng)了,一般都能及時(shí)安裝系統(tǒng)補(bǔ)丁,而且軟、硬件廠商都針對(duì)溢出問(wèn)題做了很多解決方案,可以說(shuō):緩沖區(qū)溢出在黑客攻擊中的路越來(lái)越窄。

“SQL1注入”流行之前,緩沖區(qū)溢出2是最有效的黑客滲透方法,但經(jīng)歷了一些嚴(yán)重事件后(如:Code Red、Nimda、SQL Slammer),現(xiàn)在很多網(wǎng)絡(luò)管理員的安全意識(shí)增強(qiáng)了,一般都能及時(shí)安裝系統(tǒng)補(bǔ)丁,而且軟、硬件廠商都針對(duì)溢出問(wèn)題做了很多解決方案,可以說(shuō):緩沖區(qū)溢出在黑客攻擊中的路越來(lái)越窄。這時(shí)候,針對(duì)CGI3程序的滲透被黑客發(fā)現(xiàn)是更有效的辦法,因?yàn)镃GI程序作為Web應(yīng)用程序的一部分,通常開發(fā)周期很短,相應(yīng)的測(cè)試環(huán)節(jié)很少,普遍存在缺陷,那么這些CGI程序就有可能成為突破點(diǎn)。下面我們就將介紹CGI攻擊的一大分支:SQL注入。

1、SQL即結(jié)構(gòu)查詢語(yǔ)言(Structured Query Language),一種ANSI (美國(guó)國(guó)家標(biāo)準(zhǔn)學(xué)會(huì)) 標(biāo)準(zhǔn)語(yǔ)言,用于訪問(wèn)、操作關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)(Relational database systems)。

2、緩沖區(qū)溢出是指當(dāng)計(jì)算機(jī)向緩沖區(qū)內(nèi)填充數(shù)據(jù)位數(shù)時(shí)超過(guò)了緩沖區(qū)本身的容量溢出的數(shù)據(jù)覆蓋在合法數(shù)據(jù)上。理想的情況是:程序檢查數(shù)據(jù)長(zhǎng)度并不允許輸入超過(guò)緩沖區(qū)長(zhǎng)度的字符,但是絕大多數(shù)程序都會(huì)假設(shè)數(shù)據(jù)長(zhǎng)度總是與所分配的儲(chǔ)存空間相匹配,這就為緩沖區(qū)溢出埋下隱患.操作系統(tǒng)所使用的緩沖區(qū)又被稱為"堆棧". 在各個(gè)操作進(jìn)程之間,指令會(huì)被臨時(shí)儲(chǔ)存在"堆棧"當(dāng)中,"堆棧"也會(huì)出現(xiàn)緩沖區(qū)溢出。

3、Common Gate Interface,簡(jiǎn)稱CGI。在物理上是一段程序,運(yùn)行在服務(wù)器上,提供同客戶端 Html頁(yè)面的接口。舉個(gè)例子:現(xiàn)在的個(gè)人主頁(yè)上大部分都有一個(gè)留言本。留言本的工作是這樣的:先由用戶在客戶端輸入一些信息,如名字之類的東西。接著用戶按一下“留言”(到目前為止工作都在客戶端),瀏覽器把這些信息傳送到服務(wù)器的CGI目錄下特定的CGI程序中,于是CGI程序在服務(wù)器上按照預(yù)定的方法進(jìn)行處理。在本例中就是把用戶提交的信息存入指定的文件中。然后CGI程序給客戶端發(fā)送一個(gè)信息,表示請(qǐng)求的任務(wù)已經(jīng)結(jié)束。此時(shí)用戶在瀏覽器里將看到“留言結(jié)束”的字樣。整個(gè)過(guò)程結(jié)束。

“SQL注入”現(xiàn)在已經(jīng)成為互聯(lián)網(wǎng)上最通用的攻擊方式,通過(guò)Google、百度等搜索引擎,可以發(fā)現(xiàn)很多相關(guān)說(shuō)明文章和攻擊軟件。這類攻擊的流行,一方面是由于Web應(yīng)用的迅速普及和Web后臺(tái)數(shù)據(jù)價(jià)值上升,攻擊者受經(jīng)濟(jì)利益驅(qū)使;另一方面,攻擊軟件的泛濫降低了技術(shù)門檻,如SQL注入自動(dòng)化攻擊工具實(shí)現(xiàn)了“目標(biāo)鎖定、發(fā)現(xiàn)注入點(diǎn)及注入攻擊”全過(guò)程自動(dòng)化,尤其是自動(dòng)完成“發(fā)現(xiàn)注入點(diǎn)”這一關(guān)鍵步驟,極大地方便了攻擊者,提高了攻擊成功率。

1、“SQL注入”的定義

很多Web應(yīng)用程序都使用數(shù)據(jù)庫(kù)來(lái)存儲(chǔ)信息。SQL命令就是前端Web和后端數(shù)據(jù)庫(kù)之間的接口,使得數(shù)據(jù)可以傳遞至Web應(yīng)用程序。很多Web站點(diǎn)都會(huì)利用用戶輸入的參數(shù)動(dòng)態(tài)地生成SQL查詢要求,攻擊者通過(guò)在URL、表單域,或者其他的輸入域中輸入自己的SQL命令,以此改變查詢屬性,騙過(guò)應(yīng)用程序,從而可以對(duì)數(shù)據(jù)進(jìn)行不受限的訪問(wèn)。

SQL注入漏洞成因在于Web應(yīng)用程序?qū)τ脩籼峤籆GI參數(shù)數(shù)據(jù)未做充分檢查過(guò)濾。用戶提交的數(shù)據(jù)可能會(huì)被用來(lái)構(gòu)造訪問(wèn)后臺(tái)數(shù)據(jù)庫(kù)的SQL指令,如果這些數(shù)據(jù)過(guò)濾不嚴(yán)格就有可能被插入惡意的SQL代碼,從而非授權(quán)操作后臺(tái)的數(shù)據(jù)庫(kù),導(dǎo)致從敏感信息泄露、破壞數(shù)據(jù)庫(kù)內(nèi)容和結(jié)構(gòu)、甚至利用數(shù)據(jù)庫(kù)本身的擴(kuò)展功能控制服務(wù)器操作系統(tǒng)。利用SQL注入漏洞可以構(gòu)成對(duì)Web服務(wù)器的直接攻擊,還可能利用服務(wù)器攻擊第三方的瀏覽網(wǎng)站的其他用戶。

2、“SQL注入”的歷史

我們簡(jiǎn)單回顧一下SQL注入的相關(guān)歷史。

1998年12月, Rain Forest Puppy(RFP) 在Phrack 54上發(fā)表文章“NT Web Technology Vulnerabilities”,首次提到SQL注入;

1999年2月,Allaire發(fā)出警告 “Multiple SQL Statements in Dynamic Queries”;

1999年5月, RFP與Matthew Astley發(fā)出警告 “NT ODBC Remote Compromise”;

2000年2月,RFP發(fā)表文章 “How I hacked Packetstorm – A look at hacking  wwthreads via SQL”,披露如何利用SQL注入攻擊滲透Packetstorm網(wǎng)站;

2000年9月,David Litchfield在Blackhat會(huì)議上發(fā)表主題演講“Application Assessments on IIS” ;

2000年10月,Chip Andrews在SQLSecurity.com 上發(fā)表“SQL Injection FAQ ”,首次公開使用“SQL注入”這個(gè)術(shù)語(yǔ) ;

2001年4月,David Litchfield 在Blackhat會(huì)議上發(fā)表主題演講 “Remote Web Application Disassembly with ODBC Error Messages”;

2002年1月,Chris Anley發(fā)表論文“Advanced SQL Injection in SQL Server”,首次深度探討該類攻擊。

2002年6月,Chris Anley發(fā)表論文 “(more) Advanced SQL” ,補(bǔ)充同年1月發(fā)表的論文缺少的細(xì)節(jié)。

2004年Blackhat會(huì)議上, 0x90.org發(fā)布了SQL注入工具SQeaL ( Absinthe的前身)。

3、“SQL注入”的演進(jìn)

SQL注入攻擊技術(shù)出現(xiàn)已有10多年歷史,該種攻擊技術(shù)被廣為利用。2007年,出現(xiàn)了新型的攻擊方法。之前,SQL注入攻擊針對(duì)特定的Web應(yīng)用程序,攻擊者事先已經(jīng)了解到了底層數(shù)據(jù)庫(kù)的架構(gòu)以及應(yīng)用程序注入點(diǎn)。而新型攻擊與以往有很大不同。它將可能攻擊任何存在SQL注入漏洞的動(dòng)態(tài)ASP頁(yè)面。

根據(jù)網(wǎng)絡(luò)世界(Network World)的報(bào)導(dǎo),2008年5月13日,在中國(guó)大陸、香港及臺(tái)灣地區(qū)有數(shù)萬(wàn)個(gè)網(wǎng)站遭遇一輪 SQL注入攻擊,并引發(fā)大規(guī)模掛馬。同期,根據(jù)微軟的報(bào)導(dǎo),在4個(gè)月時(shí)間內(nèi),發(fā)生了3次大規(guī)模攻擊,受害者包括某知名防病毒軟件廠商網(wǎng)站、歐洲某政府網(wǎng)站和某國(guó)際機(jī)構(gòu)網(wǎng)站在內(nèi)的多家互聯(lián)網(wǎng)網(wǎng)站,感染頁(yè)面數(shù)最多超過(guò)10,000頁(yè)面/天。

具體攻擊方式,如下圖1所示。黑客首先使用Google搜索引擎定位網(wǎng)頁(yè)中包含的動(dòng)態(tài)ASP腳本,測(cè)試腳本是否存在SQL注入漏洞并確定注入點(diǎn),最終試圖遍歷目標(biāo)網(wǎng)站后臺(tái)SQL Server數(shù)據(jù)庫(kù)的所有文本字段,插入指向惡意內(nèi)容(即黑客控制的服務(wù)器)的鏈接。攻擊的整個(gè)過(guò)程完全自動(dòng)化,一旦攻擊得逞,這些自動(dòng)插入的數(shù)據(jù)將嚴(yán)重破壞后臺(tái)數(shù)據(jù)庫(kù)所存儲(chǔ)的數(shù)據(jù),動(dòng)態(tài)腳本在處理數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí)可能出錯(cuò),各級(jí)頁(yè)面不再具有正常的觀感。被攻擊站點(diǎn)也可能成為惡意軟件的分發(fā)點(diǎn),訪問(wèn)這些網(wǎng)站的網(wǎng)民可能遭受惡意代碼的侵襲,用戶的系統(tǒng)被植入木馬程序從而完全為攻擊者控制。

 

圖1:SQL注入攻擊示意圖 

圖1:SQL注入攻擊示意圖

 

4、防御“SQL注入”的思路

盡管由于攻擊的泛濫,人們防護(hù)SQL注入的安全意識(shí)已大為提升,但仍然有眾多的人缺乏系統(tǒng)、具體的防護(hù)概念。下面將簡(jiǎn)要介紹如何以一種綜合的方法來(lái)正確防護(hù)SQL注入。如下圖2所示,理想的解決思路是在Web應(yīng)用生命周期的各個(gè)階段做相應(yīng)的努力。

圖2:基于Web生命周期的SQL注入防護(hù)方法

圖2:基于Web生命周期的SQL注入防護(hù)方法

1)開發(fā)階段

在編碼階段需要對(duì)輸入進(jìn)行細(xì)致的驗(yàn)證,使用靜態(tài)查詢,如使用參數(shù)化聲明。且遵循“最小權(quán)限準(zhǔn)則”,即只賦予應(yīng)用程序完成其功能的最基本權(quán)限。以下是關(guān)于最小權(quán)限的一些建議:

不要使用root權(quán)限訪問(wèn)數(shù)據(jù)庫(kù)

為數(shù)據(jù)表設(shè)定限制的可讀/可寫權(quán)限

慎用數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程

2)測(cè)試階段

在測(cè)試階段采用以下兩種方式確保Web應(yīng)用程序代碼的安全性:第一,采用源代碼審核方式,從編程者角度審視代碼是否存在漏洞;第二,執(zhí)行滲透測(cè)試,從攻擊者角度檢查代碼的安全性。需要注意的是,盡管完成以上兩步,仍不能確保100%的安全,但這兩種方法對(duì)于確保應(yīng)用程序質(zhì)量是必須的。

3)產(chǎn)品化階段

在產(chǎn)品化階段,Web應(yīng)用程序已經(jīng)正常上線,并對(duì)外提供服務(wù)。但還是會(huì)發(fā)現(xiàn)Web應(yīng)用存在安全隱患,此時(shí)整改代碼對(duì)各類組織來(lái)說(shuō)已經(jīng)不現(xiàn)實(shí)了,因?yàn)樾枰冻鲚^大代價(jià)。這時(shí),可以部署專用的Web應(yīng)用防火墻(Web Application Firewall,簡(jiǎn)稱WAF),以大幅提升Web應(yīng)用的安全等級(jí)。

【編輯推薦】

  1. 心情墻插件SQL注入及XSS漏洞分析和修復(fù)
  2. 網(wǎng)站SQL注入防御實(shí)戰(zhàn)演示經(jīng)典版!
  3. 如何斬?cái)郤QL注入式攻擊的瘋狂魔掌?
  4. 企業(yè)應(yīng)當(dāng)如何應(yīng)對(duì)SQL注入式攻擊
  5. 對(duì)利用Linq清除Sql注入式攻擊的深入解剖
責(zé)任編輯:佟健 來(lái)源: 51CTO.com
相關(guān)推薦

2024-06-27 10:55:21

2009-01-16 10:40:50

2014-07-30 10:55:27

2015-11-18 14:14:11

OPNFVNFV

2025-02-12 11:25:39

2011-08-23 09:52:31

CSS

2021-04-15 07:01:28

區(qū)塊鏈分布式DLT

2011-05-13 09:43:27

產(chǎn)品經(jīng)理PM

2015-06-11 11:10:09

對(duì)象存儲(chǔ)云存儲(chǔ)

2019-08-05 10:08:25

軟件操作系統(tǒng)程序員

2022-11-07 14:23:35

RPA人工智能流程自動(dòng)化管理

2013-11-14 16:03:23

Android設(shè)計(jì)Android Des

2019-04-28 09:34:06

2014-07-21 12:57:25

諾基亞微軟裁員

2016-12-29 18:21:01

2021-06-17 07:08:19

Tapablewebpack JavaScript

2016-12-29 13:34:04

阿爾法狗圍棋計(jì)算機(jī)

2012-05-18 16:54:21

FedoraFedora 17

2013-05-23 16:23:42

Windows Azu微軟公有云

2014-07-15 10:31:07

asyncawait
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)