2012-04-11 7 views
0

私は安全なフォームを行うために誰かを雇っ以下貼り付けていたが、大きなコードだけ抜粋です:これは複数のフィールドをエスケープする正しい方法ですか?

 $_POST = escape_all($_POST); 

     $some1 = $_POST['some1']; 
     $some2 = $_POST['some2']; 
     $some3 = $_POST['some3']; 
     $some4 = $_POST['some4']; 
     $some5 = $_POST['some5']; 
     $some6 = $_POST['some6']; 
     $some7 = $_POST['some7']; 
     $some8 = $_POST['some8']; 

がいることを正しい方法ですか私は(mysql_real_escape_stringの追加する必要があります)。すべての変数に?

+1

「escape_all」が何であるかによって異なります。 – Amber

+0

mysqliについてあなたの "雇用者"に教えてください –

+1

$ _POSTを使いこなすのではなく、代わりにエスケープが問題ではない場所にSQLを書くテクニック(例:Named Parameters)を使う方が良いです。 – Eli

答えて

2

彼はエスケープするカスタム関数を書いているようです。そのescape_all関数がmysql_real_escape文字列を呼び出している限り、それは技術的に動作しますが、それはいくつかの理由で好ましい解決策ではないと言います。

まず、他の場所で逃げないように注意してください。これは、二重のエスケープにつながりやすくなり、他の問題を引き起こす可能性があります。

また、パフォーマンスに問題がある場合は、状況によってはエスケープする必要のない大量のデータをエスケープすることもできます。

はい、mysqlの代わりにmysqliを使用するのが一般的です。

+0

ありがとうございます。私はまた、コード全体をチェックし、関数escape_allを見つけることができませんでした。彼が何をしているのかは分かりません。私は手動で変数に追加することができますね。 – AAA

+0

あなたは大歓迎です!コードが何らかのエラーや通知を与えていない場合は、関数がどこかにある必要があります。いずれにせよ、エスケープする必要のある入力のみを手動でエスケープするのは、POSTのスーパーグローバル全体の一般的なエスケープ処理よりも理想的な解決策です。 – Mansfield

関連する問題