この関数を使用して、MYSQL dBに書き込む前に、フィールドからすべての非数値を削除します。
function remove_non_numeric($inputtext) {return preg_replace("/[^0-9]/","",$inputtext);
これは、SQLインジェクションを防ぐために、入力データを効果的にエスケープしますか?この関数をでラップすることもできますがmysql_real_escape_string
、それは冗長かもしれないと思いました。
この関数を使用して、MYSQL dBに書き込む前に、フィールドからすべての非数値を削除します。
function remove_non_numeric($inputtext) {return preg_replace("/[^0-9]/","",$inputtext);
これは、SQLインジェクションを防ぐために、入力データを効果的にエスケープしますか?この関数をでラップすることもできますがmysql_real_escape_string
、それは冗長かもしれないと思いました。
SQLインジェクションに関しては、仮定がすべてのピー音の母です。とにかく mysql_real_escape_string でラップしてください。
これはデータをエスケープしませんが、OWASPが推奨するアプローチの例です。
入力から数値以外をすべて削除することで、ホワイト リストを実装することで SQL インジェクションから効果的に保護できます。結果の文字列 (この特定のケース) を効果的な SQL インジェクション ペイロードにするほどのパラノイアはありません。
ただし、コードは古くなり、変更され、新しい開発者に継承されるため誤解されます。要するに、正しいアドバイス、すべてを終わらせてすべてを維持することは、次の 3 つのステップの 1 つまたは複数を使用して SQL インジェクションを積極的に防止することです。この順番で。これまで。独身。時間。
mysql_real_escape_string
このカテゴリに分類されます)。mysql_real_escape_string
すべてのアンチ SQL インジェクションに対する答えではありません。これは最も堅牢な方法ではありませんが、機能します。数値以外のすべてを削除することは、安全な値をホワイトリスト化することであり、健全なアイデアでもありますが、どちらも安全な API を使用するほど良いものではありません。