ユーザーが送信した入力をフィルタリングするのに最適な場所はどこかと思います。フィルタに関しては、filter_varとfilter_inputについて話しています。
私は3つのシナリオを考え出しました:
- POST / GETからデータをフィルター処理し、フィルターデータをそのまま関数に渡します。
- POST / GETから生データを取得し、関数がフィルター処理する関数にそのまま渡します。
- POST / GETからデータをフィルター処理します。フィルター処理は、関数で2回目です。
これらの方法にはそれぞれ長所と短所があります。私は、どちらが最良または標準的な実践であるかについての洞察を探していました。
方法1は、サニタイズされたデータを関数に渡すため、入ってくるすべてのものをサニタイズする必要がなく、関数を小さくすることができます。関数が呼び出され、データがサニタイズされていない他の場所があると、問題が発生する可能性があります。これには、関数に渡す前にすべてをサニタイズすることを忘れないようにするための優れたコーディング方法が必要です。
方法2は、サニタイズされていないデータを処理する関数について心配する必要はありませんが、関数は大きくなります。
方法3が最も安全ですが、無駄です。より多くのコードが記述され、データがさまざまな機能を通過するときにデータが複数回サニタイズされ、CPUリソースと時間が無駄になる可能性があります。