ホームページ >バックエンド開発 >PHPチュートリアル >PHP 使用時に SQL Server で文字列を安全にエスケープする方法

PHP 使用時に SQL Server で文字列を安全にエスケープする方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-14 02:36:09311ブラウズ

How to Safely Escape Strings in SQL Server When Using PHP?

PHP を使用した SQL Server での文字列の安全なエスケープ

PHP を使用して SQL Server と対話する場合、ユーザーが指定したデータが適切にエスケープされ、SQL がエスケープされるのを防ぐことが重要です。注射攻撃。 mysql_real_escape_string() は MySQL で一般的に使用されますが、SQL Server では使用できません。

文字列のエスケープの代替: mssql_escape()

MySQL とは異なり、SQL Server は専用の関数を提供しません。文字列のエスケープ。ただし、独自の関数を作成することもできます。

function mssql_escape($data) {
    if (is_numeric($data)) {
        return $data;
    }
    $unpacked = unpack('H*hex', $data);
    return '0x' . $unpacked['hex'];
}

$escaped_value = mssql_escape($user_input);

この関数は、データを 16 進バイト文字列としてエンコードし、特殊文字が確実にエスケープされるようにします。

mysql_error() の代替: mssql_get_last_message( )

SQL Server からエラー メッセージを取得するには、次を使用します。 mssql_get_last_message():

$error_message = mssql_get_last_message();

この関数は、SQL Server クエリの実行によって生成された最後のエラー メッセージを取得します。

使用例

これらの関数を組み合わせると、安全に挿入できますSQL Server テーブルへのユーザー入力:

$connection = mssql_connect(...);
$query = 'INSERT INTO sometable (somecolumn) VALUES (' . mssql_escape($user_input) . ')';
$result = mssql_query($query, $connection);

if (!$result) {
    $error_message = mssql_get_last_message(); // Retrieve error message
}

以上がPHP 使用時に SQL Server で文字列を安全にエスケープする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。