PHP mysql_real_escape_string() function_PHP チュートリアル

WBOY
リリース: 2016-07-13 17:46:00
オリジナル
744 人が閲覧しました


定義と使用法
mysql_real_escape_string() 関数は、SQL ステートメントで使用される文字列内の特殊文字をエスケープします。
次の文字が影響を受けます:
×00





x1a
成功すると、関数はエスケープされた文字列を返します。失敗した場合は false を返します。
文法
mysql_real_escape_string(文字列,接続)
パラメータの説明
文字列が必要です。エスケープする文字列を指定します。
接続はオプションです。 MySQL 接続を指定します。指定しない場合は、以前の接続が使用されます。
説明
この関数は、接続の現在の文字セットを考慮して文字列内の特殊文字をエスケープするため、mysql_query() で安全に使用できます。
ヒントとメモ
ヒント: この機能を使用すると、データベース攻撃を防ぐことができます。

例 1
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('接続できませんでした: ' .mysql_error());
}

// ユーザー名とパスワードを取得するコード

// SQL で使用するためにユーザー名とパスワードをエスケープします
$user = mysql_real_escape_string($user);
$pwd = mysql_real_escape_string($pwd);

$sql = "SELECT * FROM ユーザーどこから
user='" . $user . "' AND パスワード='" . $pwd . "'"

// さらにコード

mysql_close($con);
?>
例 2
データベース攻撃。この例は、mysql_real_escape_string() 関数をユーザー名とパスワードに適用しない場合に何が起こるかを示しています:
$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('接続できませんでした: ' .mysql_error());
}

$sql = "ユーザーから * を選択
WHERE ユーザー='{$_POST['ユーザー']}'
かつパスワード='{$_POST['pwd']}'";
mysql_query($sql);

// ユーザー名とパスワードをチェックしません // 次のようなユーザーが入力したものであれば何でも構いません:
$_POST['ユーザー'] = 'ジョン';
$_POST['pwd'] = "' OR ''='";

// いくつかのコード...

mysql_close($con);
?>
SQL クエリは次のようになります:
ユーザーから * を選択
WHERE ユーザー='ジョン' AND パスワード='' または ''=''
これは、どのユーザーも有効なパスワードを入力しなくてもログインできることを意味します。
例 3
データベース攻撃を防ぐための正しい実践方法:
関数 check_input($value)
{
//スラッシュを削除します
if (get_magic_quotes_gpc())
{
$value = ストリップスラッシュ($value);
}
//数値でない場合は引用符を追加します
if (!is_numeric($value))
{
$value = "'" . mysql_real_escape_string($value) "'";
}
$value を返します;
}

$con = mysql_connect("localhost", "hello", "321");
if (!$con)
{
die('接続できませんでした: ' .mysql_error());
}

// 安全な SQL を作成します
$user = check_input($_POST['user']);
$pwd = check_input($_POST['pwd']);
$sql = "SELECT * FROM ユーザーどこから
ユーザー=$user AND パスワード=$pwd";

mysql_query($sql);

mysql_close($con);
?>

著者「向こう岸」

www.bkjia.com本当http://www.bkjia.com/PHPjc/478619.html技術記事定義と使用法 mysql_real_escape_string() 関数は、SQL ステートメントで使用される文字列内の特殊文字をエスケープします。 次の文字が影響を受けます: x00 n r x1a 成功すると、関数は戻ります...
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!