ホームページ > バックエンド開発 > PHPチュートリアル > mysql クエリの問題分析とデータ挿入の一重引用符

mysql クエリの問題分析とデータ挿入の一重引用符

WBOY
リリース: 2016-07-25 09:00:21
オリジナル
1418 人が閲覧しました
MySQL がデータをクエリまたは挿入するときに発生する一重引用符の問題に関しては、関連する問題に対処するために、mysql_real_escape_string、addslashes、および mysql_escape_string の 3 つの最もよく使用される関数が使用されます。

この記事では主に、ユーザーが送信したフォームデータをエスケープするための mysql_real_escape_string を紹介します。 また、同様の関数を持つ 3 つの関数、addslashes と mysql_escape_string の使用法の違いを紹介します。

引用符付きの MySQL クエリと引用符なしの MySQL クエリの違い データベースフィールドIDが整数の場合 ID=1 のテーブルから ID を選択 そして ID='1' のテーブルから ID を選択 どちらの SQL も使用できますが、最初の SQL は暗黙的な変換を必要とせず、2 番目の SQL よりわずかに高速です

一重引用符で囲まれた文字列を mysql データベースに挿入すると、エラーは報告されませんが、ステートメントの実行は失敗します。これは、一重引用符をエスケープする必要があるためです。 SQL アンチインジェクションに関して言えば、addslashes の問題は、ハッカーが一重引用符の代わりに 0xbf27 を使用できること、そして addslashes は 0xbf27 を 0xbf5c27 に変更するだけで、有効なマルチバイト文字になり、0xbf5c は依然として一重引用符とみなされます。したがって、addslashes は正常にインターセプトできませんでした。

もちろん、addslashes は、マルチバイト文字の処理に使用されます。mysql_real_escape_string を使用します。

PHPマニュアルのget_magic_quotes_gpcの例:

リーリー

magic_quotes_gpc がすでに開いている場合は、$_POST['lastname'] を確認してください。

2 つの関数 mysql_real_escape_string と mysql_escape_string の違い: mysql_real_escape_string は (PHP 4 >= 4.3.0、PHP 5) の場合にのみ使用できます。それ以外の場合は、mysql_escape_string のみを使用できます。この 2 つの違いは次のとおりです。 mysql_real_escape_string は接続の現在の文字セットを考慮しますが、mysql_escape_string は考慮しません。

概要: addslashes() が強制的に追加されます。 mysql_real_escape_string() は文字セットを決定しますが、PHP のバージョンには要件があります。 mysql_escape_string は、接続の現在の文字セットを考慮しません。



ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート