3

私のアプリケーションは可能な限り高速である必要があり、変数はすでに int としてキャストされているので、回避できる場合は文字列もエスケープしたくありません。

例は次のとおりです。

$var1 = (int)$_POST['number1'] //User input;
mysql_query("INSERT INTO ... $var1 ..");

それはすべての状況で安全ですか、それとも mysql_real_escape_string も同様にする必要があり$var1ますか?

エスケープする代わりに md5() vars を使用することもありますが、それで問題ないと思います。

4

4 に答える 4

7

$_POST['number1']はい、すべての状況で安全ですが、通知を避けるために が有効な整数かどうかも確認したいでしょう。

そして、あなたが言ったとしても

私は安全性についてのみ疑問に思っており、好ましい[原文のまま]の方法やコーディング標準についてはあまり心配していません。

準備済みステートメントを使用することを引き続きお勧めします。

于 2012-10-14T15:47:27.967 に答える
6

はい、これは安全ですが、有効な整数ではない値は にキャストされるため0、副作用が発生する可能性があります。

minitech が言うように、準備済みステートメントを使用することは、もはやこれについて心配する必要がないため、本当に進むべき道です。

ただし、さらに重要なことに、ここではパフォーマンスは実際には問題ではなく、考える価値はありません。文字列をエスケープするかどうかは、アプリケーションのパフォーマンスに 1 ビットも影響しません (少なくとも、文字列が数メガバイトでなければ影響はありません)。時期尚早の最適化は、多くの場合、時間の無駄です。このような「最適化」は、コードを読みにくく理解しにくくするだけであり、長期的にはこれがより重要になります。

于 2012-10-14T15:48:23.563 に答える
3

minitech が言ったように、整数であることを確認することもお勧めです。準備されたステートメントを使用する方が実際にはより安全ですが、私は最近 PDO を使用し、元に戻りませんでした。

于 2012-10-14T15:49:32.067 に答える
2

安全ですが、null などではなく、任意の文字列が 0 にキャストされることに注意してください。

于 2012-10-14T15:49:05.753 に答える