ユーザーが送信したデータが徘徊している場合、パラメーター化されたクエリが不可欠であることは理解していますが、これがユーザーの改ざん可能なデータに適用されるかどうかについて質問があります。
「.../?id=1」のような URL がある場合、$id を使用してステートメントを準備する必要がありますか、それとも URL エンコードによって脅威が除去されるのでしょうか?
ジョー
外部/変数入力があるすべての状況で、準備されたステートメント/パラメーター化されたクエリを使用しないのはなぜですか?
信頼できる唯一のクエリは、すべての要素がハードコードされているクエリ、またはアプリケーション内のハードコードされた要素から派生したクエリです。
独自のデータベースから取得したデータでさえ信頼しないでください。これは、外部/変数データとしてカウントされます。高度な攻撃では、単純な「クエリ文字列パラメーターの変更」よりも多くのベクトルを使用できます。
余分なコードのオーバーヘッドがわずかにあるだけで、クエリが保護されていることを知って安心する価値は十分にあると思います。
URL エンコーディングは脅威を除去しません。
ユーザーが触れる可能性のあるものはすべて、安全ではなく、潜在的な脅威として扱う必要があります。それ自体を検証せずにクエリid
を実行し、クエリに直接押し込むだけでも、PDO をまったく使用しない場合と同じインジェクションの問題が発生する可能性があります。