-1

mysql_real_escape_stringはより良いセキュリティのために使用します。より良いmysqlのパフォーマンスのために、私は今それを置き換えることを考えています.

mysql_escape_string VS mysql_real_escape_stringに関する詳細な説明を見つけmysql_real_escape_stringましmysql_escape_stringた。

私の質問は:

永続的な接続を使用し、文字セット (UTF-8 のみ) を知っている場合、mysql_real_escape_stringmysql を使用しないものに置き換える方法はありますか?

4

2 に答える 2

4

まず、使用および関連する機能を停止します。mysql_queryこれは PHP 5.5 で廃止され、使用すると警告が表示されます。

第二に、値をエスケープするために常にand only を使用してください。mysql_real_escape_string別の方法を試すことさえ考えないでください。これは見苦しく、煩わしく、最初から使用すべきではない多くの理由の 1 つにすぎませんmysql_query。自分で巻かないでください。安全に使用できるものがないため、より高速な代替手段を探す必要はありません。

できるだけ早い機会に、PDOに切り替えてください。アプリケーションが深刻な破損状態にある場合、変換コストはかなりの額になる可能性がありますが、適切に適用され、規律ある方法で適用されれば、SQL インジェクション バグが発生する可能性はほぼゼロになります。

エスケープ関数でパフォーマンスの問題が発生している場合、何をしているのかわかりませんが、おそらく間違っています。これらは通常、ページの読み込みごとに文字通り何百万回も実行しない限り、ほぼゼロのコストです。レンダリングするクエリの実行時間は、ほとんどの場合、ステートメント自体の準備にかかる時間よりも大幅に長くなります。

于 2013-01-03T18:17:30.763 に答える
1

http://dev.mysql.com/doc/refman/5.5/en/apis-php-class.mysqli.html

MySQLi ライブラリからパラメータ化されたクエリを使用します。以前はエスケープ ルーチンにバグがありましたが、一部が再び出現する可能性があります。クエリをパラメータ化するのは非常に難しいため、MySQL のバグによって危険にさらされる可能性は低くなります。

于 2013-01-03T18:21:13.607 に答える