第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我是否可以通過轉(zhuǎn)義單引號和用單引號包圍用戶輸入來防止SQL注入?

我是否可以通過轉(zhuǎn)義單引號和用單引號包圍用戶輸入來防止SQL注入?

我是否可以通過轉(zhuǎn)義單引號和用單引號包圍用戶輸入來防止SQL注入?我意識到,在構(gòu)建包含用戶輸入的查詢時,參數(shù)化SQL查詢是對用戶輸入進行清理的最佳方法,但我想知道接受用戶輸入和轉(zhuǎn)義任何單引號并用單引號包圍整個字符串有什么問題。下面是代碼:sSanitizedInput = "'" & Replace(sInput, "'", "''") & "'"用戶輸入的任何單引號都將替換為雙引號,這將消除用戶結(jié)束字符串的能力,因此他們可能鍵入的任何其他內(nèi)容(如分號、百分比符號等)都將是字符串的一部分,而不是作為命令的一部分實際執(zhí)行。我們使用的是MicrosoftSQLServer 2000,我認為單引號是唯一的字符串分隔符,也是轉(zhuǎn)義字符串分隔符的唯一方法,因此無法執(zhí)行用戶鍵入的任何內(nèi)容。我看不出有什么方法可以針對這種情況發(fā)起SQL注入攻擊,但我意識到,如果這像我所認為的那樣防彈,其他人就會想到這一點,這將是一種常見的做法。這個密碼怎么了?是否有辦法使SQL注入攻擊超過這種消毒技術(shù)?使用此技術(shù)的示例用戶輸入將非常有用。最新情況:我仍然不知道如何有效地針對這段代碼發(fā)起SQL注入攻擊。有幾個人建議反斜杠會轉(zhuǎn)義一個單引號,讓另一個單引號結(jié)束字符串,以便字符串的其余部分作為SQL命令的一部分執(zhí)行,我意識到這個方法可以將SQL注入MySQL數(shù)據(jù)庫,但是在SQL Server 2000中,我能夠找到的唯一方法是用另一個單引號來轉(zhuǎn)義單引號;反斜杠不能做到這一點。而且,除非有一種方法來停止轉(zhuǎn)義單引號,否則將不會執(zhí)行其余的用戶輸入,因為它都將被視為一個連續(xù)字符串。我知道有更好的方法來消毒輸入,但我更感興趣的是學習為什么我提供的方法不能工作。如果有人知道針對這種消毒方法進行SQL注入攻擊的任何具體方法,我很樂意看到它。
查看完整描述

3 回答

?
慕碼人2483693

TA貢獻1860條經(jīng)驗 獲得超9個贊

好的,這個答復將與問題的更新有關(guān):

“如果有人知道針對這種消毒方法進行SQL注入攻擊的任何具體方法,我很樂意看到它?!?/trans>

現(xiàn)在,除了MySQL反斜杠轉(zhuǎn)義-并且考慮到我們實際上是在討論MSSQL,實際上有三種可能的方法來注入您的代碼

SaniizedInput=“‘”&替換(sInput、“’”)和“‘”

請考慮到,這些代碼并非在任何時候都有效,并且非常依賴于其周圍的實際代碼:

  1. 如果基于從數(shù)據(jù)庫檢索的數(shù)據(jù)重新生成sql查詢,則為二階sql注入。

    逃出

    ,數(shù)據(jù)未經(jīng)轉(zhuǎn)義就連接在一起,可能是間接注入SQL的.看見
  2. 字符串截斷-(稍微復雜一點)-場景是有兩個字段,比如用戶名和密碼,SQL將這兩個字段連接起來。這兩個字段(或者僅僅是第一個字段)都有一個嚴格的長度限制。例如,用戶名限制為20個字符。假設(shè)你有這樣的代碼:
username = left(Replace(sInput, "'", "''"), 20)

然后你得到的是用戶名,轉(zhuǎn)義,然后修剪成20個字符。這里的問題-我會堅持我的引號在第20個字符(例如,在19個a‘s之后),你的轉(zhuǎn)義引號將被削減(在第21字符)。然后是SQL。

sSQL = "select * from USERS where username = '" + username + "'  and password = '" + password + "'"

與上述格式錯誤的用戶名相結(jié)合,將導致密碼已經(jīng)被引號,并將直接包含有效載荷。
3.Unicode走私-在某些情況下,可以傳遞一個高級Unicode字符相貌就像一句名言,但是不是-直到它到達數(shù)據(jù)庫,在那里突然它是..因為當你驗證它的時候,它不是引號,所以它會很容易.有關(guān)更多細節(jié),請參閱我先前的回復,并鏈接到原始研究。


查看完整回答
反對 回復 2019-07-17
?
冉冉說

TA貢獻1877條經(jīng)驗 獲得超1個贊

我意識到這個問題被問了很久了,但是.。

對“引號參數(shù)”過程發(fā)起攻擊的一種方法是使用字符串截斷。根據(jù)MSDN,在SQLServer2000SP4(和SQLServer2005SP1)中,過長的字符串將被悄悄截斷。

引用字符串時,字符串的大小會增加。每一個撇號都是重復的。然后,可以使用它將部分SQL推送到緩沖區(qū)之外。這樣就可以有效地減少WHERE子句的部分內(nèi)容。

這可能在“用戶管理”頁面場景中非常有用,在這個場景中,您可以濫用“UPDATE”語句來不執(zhí)行它應該做的所有檢查。

因此,如果您決定引用所有參數(shù),請確保您知道字符串大小發(fā)生了什么變化,并確保它不會被截斷。

我建議使用參數(shù)。一直都是。只希望我能在數(shù)據(jù)庫里執(zhí)行。作為一個副作用,您更有可能獲得更好的緩存命中,因為更多的語句看起來是一樣的。(Oracle 8確實如此)


查看完整回答
反對 回復 2019-07-17
  • 3 回答
  • 0 關(guān)注
  • 1299 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號