資源描述:
《淺談SQL及SQL注入》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、淺談SQL及SQL注入結(jié)構(gòu)化查詢(xún)語(yǔ)言(StructuredQueryLanguage)簡(jiǎn)稱(chēng)SQL,是一種數(shù)據(jù)庫(kù)查詢(xún)和程序設(shè)計(jì)語(yǔ)言,用于存取數(shù)據(jù)以及杏詢(xún)、更新和管理關(guān)系數(shù)據(jù)庫(kù);同時(shí)也是數(shù)據(jù)庫(kù)腳木文件的擴(kuò)展名的擴(kuò)展名,如vf中的腳本文件。SQL是1986年10月由美國(guó)國(guó)家標(biāo)準(zhǔn)局通過(guò)的數(shù)據(jù)庫(kù)語(yǔ)言美國(guó)標(biāo)準(zhǔn),接著,國(guó)際標(biāo)準(zhǔn)化組織頒布了SQL正式國(guó)際標(biāo)準(zhǔn)。1989年4月,ISO捉出了貝有完整性特征的SQL89標(biāo)準(zhǔn),1992年11月又公布了SQL92標(biāo)準(zhǔn),在此標(biāo)準(zhǔn)中,把數(shù)據(jù)庫(kù)分為三個(gè)級(jí)別:基本集、標(biāo)準(zhǔn)集和完全集。SQL五種數(shù)據(jù)
2、類(lèi)型分別是:字符型,文木型,數(shù)值型,邏輯型和日期型。一、字符型Varchar和char。varchar和char型數(shù)據(jù)差別非常小,他們都是用來(lái)儲(chǔ)存字符串長(zhǎng)度小于255的字符。varchar型字段的另一個(gè)突出的好處是它可以比char型字段占用更少的內(nèi)存和硬盤(pán)空間。當(dāng)你的數(shù)據(jù)庫(kù)很大時(shí),這種內(nèi)存和磁盤(pán)空間的節(jié)省會(huì)變得非常重耍。二、文本型TXT.o當(dāng)需要存儲(chǔ)人串的字符時(shí),應(yīng)該使用文木型數(shù)據(jù)。而文木型數(shù)據(jù)沒(méi)有長(zhǎng)度,一個(gè)文木型字段屮的數(shù)據(jù)通常要么為空,要么很人。但是,無(wú)論何時(shí),只要你能避免使用文木型字段,你就應(yīng)該不使用它。文
3、木型字段既大H慢,濫用文木型字段會(huì)使服務(wù)器速度變慢。文木型字段還會(huì)吃掉人量的磁盤(pán)空間。一旦你向文本型字段中輸入了任何數(shù)據(jù)(甚至是空值),就會(huì)有2K的空間被口動(dòng)分配給該數(shù)據(jù)。除非刪除該記錄,否則你無(wú)法收回這部分存儲(chǔ)空間。三、數(shù)值型INT,TINYINT.通常,為了節(jié)省空間,應(yīng)該盡可能的使用最小的整型數(shù)據(jù)。一個(gè)T1NYINT型數(shù)據(jù)只用一個(gè)字節(jié);一個(gè)INT型數(shù)據(jù)占用四個(gè)字節(jié)。這看起來(lái)似乎差別不大,但是在比較大的表中,字節(jié)數(shù)的增長(zhǎng)是很快的。另一方面,一旦你已經(jīng)創(chuàng)建了一個(gè)字段,要修改它是很困難的。因此,為安全起見(jiàn),你應(yīng)該預(yù)
4、測(cè)一下,一個(gè)字段所需要存儲(chǔ)的數(shù)值最大冇可能是多人,然示選擇適當(dāng)?shù)臄?shù)據(jù)類(lèi)型。NUMERIC.為了能對(duì)字段所存放的數(shù)據(jù)有更多的控制,你町以使用NUMERIC烈數(shù)據(jù)來(lái)同時(shí)表示一個(gè)數(shù)的整數(shù)部分和小數(shù)部分。NUMERIC型數(shù)據(jù)使你能表示非常人的數(shù)——比INT型數(shù)據(jù)要大得多。一個(gè)NUMERIC型字段町以存儲(chǔ)從?1038到1038范圍內(nèi)的數(shù)。NUMERIC型數(shù)據(jù)還使你能表示有小數(shù)部分的數(shù)。例如,你可以在NUMERIC型字段中存儲(chǔ)小數(shù)3.14。MONEY,SMALLMONEY.你對(duì)以使用INT型或NUMERIC烈數(shù)據(jù)來(lái)存儲(chǔ)錢(qián)數(shù)。
5、但是,專(zhuān)門(mén)有另外兩種數(shù)據(jù)用于此目的。如果你希望你的網(wǎng)點(diǎn)能掙很多錢(qián),你可以使用MONEY型數(shù)據(jù)。如果你的野心不人,傷〈可以使用SMALLMONEY型數(shù)據(jù)。MONEY型數(shù)據(jù)可以存儲(chǔ)從-922,337,203,685,477.5808到922,337,203,685,477.5807的錢(qián)數(shù)。如果你需要存儲(chǔ)比這還人的金額,你可以使用NUMERIC型數(shù)據(jù)oSMALLMONEY型數(shù)據(jù)只能存儲(chǔ)從-214,748.3648到214,748.3647的錢(qián)數(shù)。同樣,如果可以的話(huà),你應(yīng)該用SMALLMONEY型來(lái)代替MONEY型數(shù)據(jù),
6、以節(jié)省空間。四、邏輯型如果使用復(fù)選框從網(wǎng)頁(yè)屮搜集信息,可以把此信息存儲(chǔ)在BIT型字段屮。BIT型字段只能取兩個(gè)值:()或1。但在創(chuàng)建好一個(gè)表之后,不能向表中添加BIT型字段。如果打算在一個(gè)表中包含BIT型字段,必須在創(chuàng)建表吋完成。五、日期型DATETIMESMALLDATETIME。一個(gè)DATETIME型的字段町以存儲(chǔ)的Fl期范圍是從1753年1月1FI第一?毫秒到9999年12月31H最后一毫秒。如果你不需要覆蓋這么大范圍的FI期和時(shí)間,你可以使用SMALLDATETIME型數(shù)據(jù)。它與DATETIME型數(shù)據(jù)同樣
7、使用,只不過(guò)它能表示的I」期和時(shí)間范圍比DATETIME型數(shù)據(jù)小,而且不如DATETIME型數(shù)據(jù)精確?!?個(gè)SMALLDATETIME型的字段能夠存儲(chǔ)從1900年1月1日到2079年6月6H的H期,它只能精確到秒。DATETIME型字段在你輸入II期和時(shí)間之前并不包含實(shí)際的數(shù)據(jù)。SQL注入SQL注入,就是通過(guò)把SQL命令插入到Web表單遞交或輸入域名或頁(yè)而請(qǐng)求的查詢(xún)字符串,最終達(dá)到欺騙服務(wù)器執(zhí)行惡意的SQL命令,比如先前的很多影視網(wǎng)站泄露VIP會(huì)員密碼人多就是通過(guò)WEB表單遞交杏詢(xún)字符暴岀的,這類(lèi)表單特別容易受到
8、SQL注入攻擊。SQL注入技術(shù)一、強(qiáng)制產(chǎn)生錯(cuò)誤對(duì)數(shù)據(jù)庫(kù)類(lèi)型、版木等信息進(jìn)行識(shí)別是此類(lèi)型攻擊的動(dòng)機(jī)所在。它的目的是收集數(shù)據(jù)庫(kù)的類(lèi)型、結(jié)構(gòu)等信息為其他類(lèi)型的攻擊做準(zhǔn)備,可謂是攻擊的一個(gè)預(yù)備步驟。利用應(yīng)用程序服務(wù)器返凹的默認(rèn)錯(cuò)誤信息而取得漏洞信息。二、采用非主流通道技術(shù)除HTTP響應(yīng)外,能通過(guò)通道獲取數(shù)據(jù),然而,通道人都依賴(lài)與數(shù)據(jù)庫(kù)支持的功能而存在,所以這項(xiàng)技術(shù)不完全適用于所冇