PHP を使用した SQL Server での文字列のエスケープ
データベース プログラミングの領域では、SQL インジェクション攻撃を防ぐことが最も重要です。 SQL クエリ用の文字列をエスケープすることは、悪意のあるエクスプロイトから保護するための重要なステップです。
特に SQL Server を扱う場合、多くの開発者は、PHP の非推奨の mysql_real_escape_string() 関数の代替手段について疑問に思っています。 addslashes() は簡単な置き換えのように見えるかもしれませんが、状況によっては不十分です。
16 進バイト文字列ソリューション
包括的なソリューションとして、データを次のように変換することを検討してください。 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 サイトの他の関連記事を参照してください。