區(qū)別一:

addslashes不知道任何有關(guān)MySQL連接的字符集。如果你給所使用的MySQL " /> 国产精品VIDEOS麻豆TUBE,久久久久激情免费观看,26uuu老色哥

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP函數(shù)addslashes和mysql_real_escape_string的區(qū)別

首先:不要使用mysql_escape_string,它已被棄用,請(qǐng)使用mysql_real_escape_string代替它。

mysql_real_escape_string和addslashes的區(qū)別在于:

區(qū)別一:

addslashes不知道任何有關(guān)MySQL連接的字符集。如果你給所使用的MySQL連接傳遞一個(gè)包含字節(jié)編碼之外的其他編碼的字符串,它會(huì)很愉快地把所有值為字符‘、“、/和/x00的字節(jié)進(jìn)行轉(zhuǎn)義。如果你正在使用不同于8位和UTF-8的其它字符,這些字節(jié)的值不一定全部都是表示字符‘、“、/和/x00。可能造成的結(jié)果是,MySQL接收這些字符后出現(xiàn)錯(cuò)誤。

如果要修正這個(gè)bug,可嘗試使用iconv函數(shù),將變量轉(zhuǎn)為UTF-16,然后再使用addslashes進(jìn)行轉(zhuǎn)義。

這是不使用addslashes進(jìn)行轉(zhuǎn)義的原因之一。

區(qū)別二:

與addslashes對(duì)比,mysql_real_escape_string同時(shí)還對(duì)/r、/n和/x1a進(jìn)行轉(zhuǎn)義。看來,這些字符必須正確地告訴MySQL,否則會(huì)得到錯(cuò)誤的查詢結(jié)果。

這是不使用addslashes進(jìn)行轉(zhuǎn)義的另一個(gè)原因。

addslashes V.S. mysql_real_escape_string

在GBK里,0xbf27不是一個(gè)合法的多字符字符,但0xbf5c卻是。在單字節(jié)環(huán)境里,0xbf27被視為0xbf后面跟著0×27(‘),同時(shí)0xbf5c被視為0xbf后面跟著0x5c(/)。

一個(gè)用反斜杠轉(zhuǎn)義的單引號(hào),是無法有效阻止針對(duì)MySQL的SQL注入攻擊的。如果你使用addslashes,那么,我(攻擊者,下同)是很幸運(yùn)的。我只要注入一些類似0xbf27,然后addslashes將它修改為0xbf5c27,一個(gè)合法的多字節(jié)字符后面接著一個(gè)單引號(hào)。換句話說,我可以無視你的轉(zhuǎn)義,成功地注入一個(gè)單引號(hào)。這是因?yàn)?xbf5c被當(dāng)作單字節(jié)字符,而非雙字節(jié)。

在這個(gè)演示中,我將使用MySQL 5.0和php的mysqli擴(kuò)展。如果你想嘗試,請(qǐng)確保你使用GBK。

創(chuàng)建一個(gè)名為users的表:
復(fù)制代碼 代碼如下:
CREATE TABLE users(
 username VARCHAR(32) CHARACTER SET GBK,
 password VARCHAR(32) CHARACTER SET GBK,
 PRIMARY KEY(username)
);
下面的代碼模擬只使用addslashes(或magic_quotes_gpc)對(duì)查詢數(shù)據(jù)進(jìn)行轉(zhuǎn)義時(shí)的情況:
復(fù)制代碼 代碼如下:
<?php
$mysql = array();
$db = mysqli_init();
$db->real_connect('localhost', 'lorui', 'lorui.com', 'lorui_db');
/* SQL注入示例 */
$_POST['username'] = chr(0xbf) . chr(0×27) . ‘ OR username = username /*'; $_POST['password'] = ‘guess'; $mysql['username'] = addslashes($_POST['username']); $mysql['password'] = addslashes($_POST['password']); $sql = “SELECT * FROM users WHERE username = ‘{$mysql['username']}' AND password = ‘{$mysql['password']}'”; $result = $db->query($sql); if ($result->num_rows) { /* 成功 */ } else { /* 失敗 */ }

盡管使用了addslashes,我還是可以在不知道用戶名和密碼的情況下成功登錄。我可以輕松的利用這個(gè)漏洞進(jìn)行SQL注入。

要以免這種漏洞,使用mysql_real_escape_string、準(zhǔn)備語句(Prepared Statements,即“參數(shù)化查詢”)或者任意一款主流的數(shù)據(jù)庫(kù)抽象類庫(kù)。

php技術(shù)PHP函數(shù)addslashes和mysql_real_escape_string的區(qū)別,轉(zhuǎn)載需保留來源!

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

主站蜘蛛池模板: yellow视频免费观看高清在线 | 国产成人高清在线观看播放 | metart中国撒尿人体欣赏 | 三级中国免费的 | 国产香蕉九九久久精品免费 | 国产在线aaa片一区二区99 | 色婷婷狠狠97成为人免费 | 黑粗硬大欧美在线视频 | 国产色精品久久人妻99蜜桃麻豆 | 天美传媒果冻传媒入口视频 | CHINESE老阿姨免费视频 | 国产乱码一区二区三区 | 最近的2019中文字幕国语HD | 在线视频 国产精品 中文字幕 | 中文字幕人成人乱码亚洲AV | 最好看中文字幕国语 | 在线免费国产 | TIMI1TV天美传媒在线观看 | 精品亚洲午夜久久久久 | 男人插曲女人的叫声 | 国产专区青青在线视频 | 亚洲一区免费香蕉在线 | 日本久久精品毛片一区随边看 | 国产人妻麻豆蜜桃色69 | 久9青青cao精品视频在线 | 国产白丝JK被疯狂输出视频 | 秋霞电影网午夜鲁丝片无码 | 精品国产在线亚洲欧美 | 美女pk精子4 | 蜜桃传媒在线观看 | 国产精品一区二区在线播放 | 久久精品视频15人人爱在线直播 | 日韩高清特级特黄毛片 | 一区二区三区内射美女毛片 | 成人1000部免费观看视频 | 亚洲 欧美 国产 伦 综合 | 欧美丰满少妇久久无码精品 | 精品国产成人系列 | 久久99国产精品无码AV | 国产AV精品一区二区三区漫画 | 精品欧美一区二区三区四区 |