欧美三级电影完整|亚洲一二三四久久|性爱视频精品一区二区免费在线观看|国产精品啪啪视频|婷婷六月综合操人妻视频网站|99爱免费视频在线观看|美女一级片在线观看|北京熟女88av|免费看黄色A级电影|欧美黄色毛片儿

SQL 語(yǔ)句中特殊字符的處理及預(yù)防sql 注射

2023-04-12


在sql語(yǔ)句中,有些特殊字符,是sql保留的。比如 ' [ ] 等。我們可以先看看它們的用法。

當(dāng)需要查詢(xún)某數(shù)據(jù)時(shí),加入條件語(yǔ)句,或著當(dāng)你需要insert記錄時(shí),我們用 ' 來(lái)將字符類(lèi)型的數(shù)據(jù)引起來(lái)。比如:
Select * from Customers where City = 'London'

當(dāng)表的名字或列的名字中,含有空格等一些特殊字符時(shí),我們需要用[] 將表名引起來(lái),告訴語(yǔ)法分析器,[]號(hào)內(nèi)的才是一個(gè)完整的名稱(chēng)。比如

Select * from [Order Details]

如果,字符數(shù)據(jù)中,含有 ' 改怎么辦呢?其實(shí),好多人在這里并沒(méi)有處理字符川中' 符號(hào),才造成sql 注射危險(xiǎn)。就那上面的那個(gè)例子。在Sql語(yǔ)句拼接的時(shí)代,比如

string sql = "select * from Customers where CustomerID = '" + temp + "'";

如果,我給temp賦值為 Tom' or 1=1 ---
那么你拼接起來(lái)的語(yǔ)句為 select * from Customers where CustomerID = 'Tom' or 1=1 ---'
哈哈,1=1 衡為真,---會(huì)把后面的sql語(yǔ)句注釋掉。而前面因?yàn)橛休斎氲?' 而使的語(yǔ)句是合法的。那or的條件,會(huì)把所有的記錄都選出來(lái)。這就是sql注入。在做用戶(hù)登陸時(shí),如果沒(méi)有處理該問(wèn)題,那你的系統(tǒng)受危害的可能性會(huì)很高的。
如何處理字符數(shù)據(jù)中的 ' 符號(hào)呢? 方法很簡(jiǎn)單,用兩個(gè) ' 符號(hào)代替一個(gè)。 比如,其實(shí)際傳入的值為L(zhǎng)on'don,處理后為
Select * from Customers where City = 'Lon''don'
就可以了。

如果表或列的名稱(chēng)中含有 [ 或 ] 字符呢?比如Select * from [Order] Details],那中間 ] 符號(hào)豈不是先和第一個(gè)[ 配了。后面的就是非法的了。怎么辦呢? 簡(jiǎn)單,使用 ]] 代替 ] 。對(duì)于[,則無(wú)須處理。那就該為
Select * from [Order]] Details]。


本文僅代表作者觀點(diǎn),版權(quán)歸原創(chuàng)者所有,如需轉(zhuǎn)載請(qǐng)?jiān)谖闹凶⒚鱽?lái)源及作者名字。

免責(zé)聲明:本文系轉(zhuǎn)載編輯文章,僅作分享之用。如分享內(nèi)容、圖片侵犯到您的版權(quán)或非授權(quán)發(fā)布,請(qǐng)及時(shí)與我們聯(lián)系進(jìn)行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com