最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP與SQL注入攻擊[三]

 更新時(shí)間:2007年04月17日 00:00:00   作者:  
這幾天太忙,繼續(xù)連載哈哈,爭(zhēng)取半個(gè)月結(jié)束。

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

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

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

例如:

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之外的所有字符都是占位符,不允許更改。呵呵,我覺(jué)得這種方法實(shí)在是個(gè)好方法。不過(guò)可惜不是所有數(shù)據(jù)庫(kù)都支持。。

相關(guān)文章

最新評(píng)論

浦县| 外汇| 卓资县| 扎赉特旗| 合肥市| 昌图县| 麻栗坡县| 宜兰市| 滨海县| 洪江市| 常德市| 长武县| 盖州市| 景洪市| 永安市| 高安市| 阳朔县| 乌苏市| 阿拉尔市| 常熟市| 武城县| 长沙市| 柳江县| 盐源县| 东方市| 横山县| 苗栗市| 曲靖市| 玉溪市| 自治县| 崇阳县| 双辽市| 贡山| 榆林市| 章丘市| 铜陵市| 平利县| 岳西县| 小金县| 崇信县| 永兴县|