現在、私はLaravel PHPフレームワークでHTMLフォームを使用してすべてのデータ入力を処理するWebアプリケーションを開発中です。それはID
がユーザーから隠されているPOST
方法を使用して、サーバー側の検証があるとしてデータベースに新しいエントリを作成するPATCHメソッドを使用する潜在的な脆弱性
は問題ではありません。
ただし、データベース行のエントリを更新または変更する場合は、メソッドを使用して、データを/form/{ID}
のURI(/form1/1
)に送信しています。私はユーザーからの望ましくない入力を防ぐために、サーバー側でデータとユーザーの検証を行いました。しかし、HTML知識を持つユーザーの中には、フォームのURI
を/form1/1
から/form1/2
〜PATCH
に変更すると、不要なバイパスとしてカウントされるID=1
の代わりにID=2
のデータに変更されることがあります。
潜在的なセキュリティリスクがあるため、これを防止する方法はありますか?
データの所有者がそのサブジェクトデータが属するユーザーであることを確認するだけでこれを防ぐことができます。そうであれば編集が行われ、それ以外の場合はリダイレクトされます。 –
データの所有権を検証する以外にも、前述の問題をさらに防ぐために実行する必要がある他の検証はありますか? – Woody
タイトルは完全に間違っています。つまり、 'PATCH'メソッドに関連する脆弱性が存在します。チェックを実装していないために脆弱性が存在します。あなたが@MattBurrowが言及したことをすれば、あなたは大丈夫です。このプロセスを簡単にするために、Laravelのミドルウェアを利用できます。ミドルウェアは、チェックが成功するとルートコールバックを実行します。 – Mjh