PHP 公式 ハングル 説明 : mysql_real_escape_string

SQL インジェクション 攻撃は ID私 PASSWORD イブリョックカンに SQL門を 入れて DBを はたく のを 言う.

PHP 公式 ウェブサイトには SQL インジェクション 攻撃の 例で 下と ような のを 入って おいて ある.

// ユーザーが あるのか DBで チェックする クイーリー
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// $_POST['password']を チェックする 数 なく なって, どうな ユーザーでも 許容するように なる. 例を 入れば:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// MySQLに こういう クイーリーが 送信されるという のを 意味する:
echo $query;
//SELECT * FROM users WHERE user='aidan' AND password='' OR ''=''

mysql_real_escape_string 関数は ところで こういう 攻撃を 阻んで 与える 関数だ.

PHP 公式 ウェブサイトには 下を 模範 例題で 入って ある.

if (isset($_POST['product_name']) && isset($_POST['product_description']) && isset($_POST['user_id'])) {
    // 接続
    $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password');

    if(!is_resource($link)) {

        echo "サーバー 接続 失敗n";
        // ... 間違いを 適切に 記録

    } else {

        // ON仕事 場合 magic_quotes_gpc/magic_quotes_sybase 效果 除去

        if(get_magic_quotes_gpc()) {
            $product_name        = stripslashes($_POST['product_name']);
            $product_description = stripslashes($_POST['product_description']);
        } else {
            $product_name        = $_POST['product_name'];
            $product_description = $_POST['product_description'];
        }

        // 安全な 質の 作り
        $query = sprintf("INSERT INTO products (`name`, `description`, `user_id`) VALUES ('%s', '%s', %d)",
                    mysql_real_escape_string($product_name, $link),
                    mysql_real_escape_string($product_description, $link),
                    $_POST['user_id']);

        mysql_query($query, $link);

        if (mysql_affected_rows($link) > 0) {
            echo "Product insertedn";
        }
    }
} else {
    echo "Fill the form propertyn";
}

上と ような 方式で 使えば なる.

- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。