我傳遞一個變量來執行一個查詢功能mysql_real_escape_string的安全替代方法? (PHP)
MySQL的連接只發生在函數內部,並關閉功能
我希望能安全逃離字符串之前我裏面它們發送到功能
,因爲它需要一個MySQL連接(其只被在函數內部製造)
我知道簡單的答案是爲了躲避函數內部字符串我不能用mysql_real_escape_string,但我不能這樣做,因爲我需要發送一些逃脫了,和一個字符串
例如一些非逃出的部分,我需要運行這樣的功能:
myquery("'" . escape_me("My string") . "'");
通知我發送兩個apostrophe's--轉義,與逃脫的字符串裏面。出於這個原因,我不能在myquery函數內部的參數上執行一個全局的mysql_real_escape_string。
我發現下面的代碼,這意味着我可以用它來替代mysql_real_escape_string:
// escape characters
function escape_me($value) {
$return = '';
for($i = 0; $i < strlen($value); ++$i) {
$char = $value[$i];
$ord = ord($char);
if($char !== "'" && $char !== "\"" && $char !== '\\' && $ord >= 32 && $ord <= 126)
$return .= $char;
else
$return .= '\\x' . dechex($ord);
}
return $return;
}
我不知道這個功能是從多字節攻擊安全的,但我想我還需要撤消功能我每次查詢
例如,輸入: 測試3的「OK」變成測試3x27s x22OKx22數據庫
所以我的主要問題是: 待辦事項你知道是否有另一個函數可以作爲mysql_real_escape_string的替代函數來安全地轉義字符嗎?
得到了一個非轉義的東西的例子? – 2010-09-22 16:44:45