2016-03-21 25 views
0

現在、私はLaravel PHPフレームワークでHTMLフォームを使用してすべてのデータ入力を処理するWebアプリケーションを開発中です。それはIDがユーザーから隠されているPOST方法を使用して、サーバー側の検証があるとしてデータベースに新しいエントリを作成するPATCHメソッドを使用する潜在的な脆弱性

は問題ではありません。

ただし、データベース行のエントリを更新または変更する場合は、メソッドを使用して、データを/form/{ID}のURI(/form1/1)に送信しています。私はユーザーからの望ましくない入力を防ぐために、サーバー側でデータとユーザーの検証を行いました。しかし、HTML知識を持つユーザーの中には、フォームのURI/form1/1から/form1/2PATCHに変更すると、不要なバイパスとしてカウントされるID=1の代わりにID=2のデータに変更されることがあります。

潜在的なセキュリティリスクがあるため、これを防止する方法はありますか?

+4

データの所有者がそのサブジェクトデータが属するユーザーであることを確認するだけでこれを防ぐことができます。そうであれば編集が行われ、それ以外の場合はリダイレクトされます。 –

+0

データの所有権を検証する以外にも、前述の問題をさらに防ぐために実行する必要がある他の検証はありますか? – Woody

+1

タイトルは完全に間違っています。つまり、 'PATCH'メソッドに関連する脆弱性が存在します。チェックを実装していないために脆弱性が存在します。あなたが@MattBurrowが言及したことをすれば、あなたは大丈夫です。このプロセスを簡単にするために、Laravelのミドルウェアを利用できます。ミドルウェアは、チェックが成功するとルートコールバックを実行します。 – Mjh

答えて

1

承認を実装する必要があります。詳細については、公式ドキュメントをご覧くださいhttps://laravel.com/docs/master/authorization

+0

私はデータの所有権を確認しない限り、ユーザーは任意のIDに簡単に 'パッチ'することができます。 – Woody

+0

権限を持っている場合、ユーザーは自分の投稿のみを更新できます。 –

+0

おそらく彼は彼が認証を持っていると思ったでしょう。しかし、はい、許可を実装する必要があります、セキュリティ有権者を使用してみてください、これは私たちがsymfonyプロジェクトでやる方法です。 – tomazahlin

関連する問題