sql注入的防護(hù)

一、嚴(yán)格的數(shù)據(jù)類型

在Java,C#等高級(jí)語言中,幾乎不存在數(shù)字類型注入,而對(duì)于PHP,ASP等弱類型語言,就存在了危險(xiǎn)。

防御數(shù)字型注入相對(duì)簡單,如果不需要輸入字符型數(shù)據(jù),則可以用is_numeric()、ctype_digit()等函數(shù)判斷數(shù)據(jù)類型。

二、特殊字符轉(zhuǎn)義

字符型注入一般需要單引號(hào)閉合,首先想到的應(yīng)對(duì)方法,就是字符轉(zhuǎn)義。

在PHP中可用addslashes()函數(shù)進(jìn)行轉(zhuǎn)義字符,可以將單雙引號(hào)、反斜線及NULL加上反斜線轉(zhuǎn)義。還可以通過過濾關(guān)鍵字,如:select,union select , order by ,information, table,等等。

在特殊字符轉(zhuǎn)義時(shí),還有另一種更加難以防范的sql注入:二次注入攻擊。

我們寫入數(shù)據(jù)? admin',會(huì)變成? admin\',但是在插入的數(shù)據(jù)庫時(shí)是不帶有反斜杠的, 也就是說數(shù)據(jù)庫中的數(shù)據(jù)還是? admin',這樣的話,如果這個(gè)網(wǎng)站有另一個(gè)地方查詢這個(gè)字段的內(nèi)容,就造成了二次注入攻擊。

三、使用預(yù)編譯語句

預(yù)編譯技術(shù)可以有效的防御sql注入,我開發(fā)是個(gè)弱雞,就不細(xì)細(xì)講解了。

采用預(yù)編譯技術(shù)要注意,不要使用動(dòng)態(tài)拼接sql語句。

簡單來說,動(dòng)態(tài)拼接語句就是字符串連接變量的意思,如:

變量="select.......where id = "+變量;

總之,在存在sql語句的代碼中,一定要謹(jǐn)慎,最好不要用動(dòng)態(tài)拼接SQL語句。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • SQL注入 概念 危害 原理 實(shí)例 防御 基礎(chǔ) - ### SQL語句所用符號(hào)不同數(shù)據(jù)庫的sql注入與提權(quán)常見S...
    yddchsc君閱讀 1,502評(píng)論 1 10
  • 醒了 一張潔白的床單 真白 掏空的小心臟 亮了 一堆打亂的撲克 真亂 狂歡的殘局 每天都像末日!shit?。。?!
    小偷騙子流氓閱讀 223評(píng)論 0 1
  • 你在家里練字,練不好,很郁悶,給我發(fā)消息。 來,就讓你夏老師來指導(dǎo)你吧! 練習(xí)的例字是“又”,你寫出了一股濃濃的自...
    時(shí)光里拾光閱讀 667評(píng)論 0 0
  • 孩子注意力不集中,家長很苦惱,海歸媽媽手把手教學(xué),改善孩子注意力,教你改變方法不走偏! 本次課程的主要內(nèi)容: 1....
    江江爸媽課堂閱讀 1,096評(píng)論 0 0

友情鏈接更多精彩內(nèi)容