ホームページ  >  記事  >  バックエンド開発  >  php mysql_real_escape_string関数の使用法と例tutorial_PHPチュートリアル

php mysql_real_escape_string関数の使用法と例tutorial_PHPチュートリアル

WBOY
WBOYオリジナル
2016-07-21 16:13:29880ブラウズ

現在の文字の接続設定を考慮して、unescaped_string 内の特殊文字をエスケープして、mysql_query() 内で安全に配置できるようにします。バイナリデータを挿入する場合は、この関数を使用する必要があります

次の文字が影響を受けます:

  • x00
  • r
  • '
  • x1a

成功した場合、関数はエスケープされた文字列を返します。失敗した場合は false を返します。

文法

mysql_real_escape_string(string,connection)
パラメータ 説明
文字列 必須。エスケープする文字列を指定します。
接続 オプション。 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 users WHERE
user='" . $user . "'"

// その他のコード

mysql_close($con);
?>

例 2
データベース攻撃。この例は、mysql_real_escape_string() 関数をユーザー名とパスワードに適用しない場合に何が起こるかを示しています:

コードをコピーします コードは次のとおりです:

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

$sql = "SELECT * FROM ユーザー
WHERE user='{$_POST['user']}'
AND パスワード='{$_POST['pwd']}'";
mysql_query($sql);

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

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

mysql_close($con);
?>

その後、SQL クエリは次のようになります:

SELECT * FROM users
WHERE user='john' AND passwd='' OR ''='' これは、有効なパスワードを入力しなくても、どのユーザーもログインできることを意味します。

例 3
データベース攻撃を防ぐ正しい方法:

コードをコピーします コードは次のとおりです:

function check_input($value)
{
// スラッシュを削除します
if (get_magic_quotes_gpc())
{
$value =tripslashes ($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 users WHERE
user= $ユーザーとパスワード=$pwd";

mysql_query($sql);


mysql_close($con);
?>


http://www.bkjia.com/PHPjc/313495.html

www.bkjia.comtru​​e

http://www.bkjia.com/PHPjc/313495.html技術記事現在の文字の接続設定を考慮して、unescaped_string 内の特殊文字をエスケープして、mysql_query() 内で安全に配置できるようにします。バイナリデータを挿入する場合、この関数は...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。