ホームページ >バックエンド開発 >PHPチュートリアル >PHP を使用して SQL Server クエリの文字列を安全にエスケープするにはどうすればよいですか?

PHP を使用して SQL Server クエリの文字列を安全にエスケープするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-09 02:05:14202ブラウズ

How Can I Safely Escape Strings in SQL Server Queries Using PHP?

PHP を使用した SQL Server での文字列のエスケープ: 総合ガイド

PHP を使用して SQL Server を操作する場合、データを外部から保護することが重要です。文字列を適切にエスケープすることによる SQL インジェクション攻撃。これは、悪意のある入力が SQL コマンドとして解釈されるのを防ぐ手法です。

mysql_real_escape_string() の代替

MySQL とは異なり、SQL Server には組み込みのと同等の機能mysql_real_escape_string().

Enteraddslashes()

addslashes() は、文字列エスケープの代替候補としてよく考えられる PHP 関数です。ただし、addslashes() は SQL Server データベースでの使用には完全に適しているわけではないことに注意することが重要です。

より堅牢なソリューション

理想的なソリューションは、手動でエンコードすることです。データは 16 進数のバイト文字列として扱われます。ガイドとなるコード スニペットは次のとおりです。

$unpacked = unpack('H*hex', $data);
mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (0x' . $unpacked['hex'] . ')
');

再利用可能なエスケープの抽象化

エスケープ プロセスを簡素化して再利用するには、次のようなカスタム関数を作成できます。

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

mssql_query('
    INSERT INTO sometable (somecolumn)
    VALUES (' . mssql_escape($somevalue) . ')
');

の代替mysql_error()

エラー処理のために、SQL Server は mysql_error() の代わりに mssql_get_last_message() を提供します。

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

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