上文說到數(shù)據(jù)庫自帶的不安全輸入過濾功能,但這樣的功能不是所有數(shù)據(jù)庫都有的。目前大概只有MySQL,SQLite,PostgreSQL,Sybase帶有這樣的功能,而包括Oracle和SQL Server在內(nèi)的 " /> 国产一区亚洲,日本精品免费观看,精品视频在线观看一区二区三区

中文字幕日韩一区二区_国产一区二区av_国产毛片av_久久久久国产一区_色婷婷电影_国产一区二区精品

PHP與SQL注入攻擊[三]

這幾天太忙,繼續(xù)連載哈哈,爭取半個(gè)月結(jié)束。

上文說到數(shù)據(jù)庫自帶的不安全輸入過濾功能,但這樣的功能不是所有數(shù)據(jù)庫都有的。目前大概只有MySQL,SQLite,PostgreSQL,Sybase帶有這樣的功能,而包括Oracle和SQL Server在內(nèi)的很多數(shù)據(jù)庫都沒有。

鑒于這樣的情況,一般開發(fā)者采用一種通用的方法來避免不安全的數(shù)據(jù)寫入數(shù)據(jù)庫--base64編碼。這樣可以避免所有可能引起問題的特殊字符造成的危險(xiǎn)。但Base64編碼后的數(shù)據(jù)容量大概會增加33%,比較占用空間。在PostgreSQL中,使用Base64編碼數(shù)據(jù)還有個(gè)問題,就是無法使用'LIKE'查詢。

所以總結(jié)這么多,我們知道光靠數(shù)據(jù)庫自身的字符串屏蔽也是不行的。我們需要一種解決方案,在特殊字符影響到我們的Query語句之前,就把危險(xiǎn)的字符過濾掉。預(yù)定義查詢(Prepared queries/prepared statements)是一個(gè)非常好的方法。什么是預(yù)定義查詢呢? 它就相當(dāng)于一個(gè)查詢語句的模板,定義了查詢語句的結(jié)構(gòu)和某些部份的數(shù)據(jù)類型。如果我們提交的SQL語句符合這個(gè)模板的定義,就執(zhí)行,否則就不執(zhí)行,報(bào)出錯誤。

例如:

pg_query($conn, “PREPARE stmt_name (text) AS SELECT * FROM users WHERE name=$1”);
pg_query($conn, “EXECUTE stmt_name ({$name})”);
pg_query($conn, “DEALLOCATE stmt_name”);

PREPARE stmt_name (text) AS ..定義了一個(gè)查詢的格式,這里除了$1之外的所有字符都是占位符,不允許更改。呵呵,我覺得這種方法實(shí)在是個(gè)好方法。不過可惜不是所有數(shù)據(jù)庫都支持。。

php技術(shù)PHP與SQL注入攻擊[三],轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本在线免费视频 | 九九热在线视频免费观看 | www.日日夜夜 | 少妇性l交大片免费一 | 国产一区三区视频 | 91精品国产综合久久小仙女图片 | 午夜资源 | 欧美另类视频 | 色吧色综合 | 亚洲精品乱码久久久久久按摩观 | 欧美看片| 日韩中字幕 | 久久综合久久综合久久综合 | 久久久精品天堂 | 神马福利 | 91精品国产91久久久久久不卞 | 精品一区二区三区91 | 国产精品99久久久久久宅男 | 亚洲精品一区二三区不卡 | 一区二区三区四区五区在线视频 | av 一区二区三区 | 国产精品一卡二卡三卡 | 激情久久av一区av二区av三区 | 日韩欧美在线一区 | 紧缚调教一区二区三区视频 | 日本一区二区不卡 | 精品中文字幕一区二区 | 不卡的av电影 | 婷婷99| 免费一区二区三区 | 91精品久久久久久综合五月天 | 亚洲日韩欧美一区二区在线 | 国产一区二区三区 | 国产精产国品一二三产区视频 | 一本色道精品久久一区二区三区 | 91中文视频 | 欧美一区二区三区在线视频 | 日本不卡免费新一二三区 | 狠狠干2020 | 国产又色又爽又黄又免费 | 中文字幕一区二区三区精彩视频 |