私はlaravel webappを持っています。ログイン中だけでなく、特定のアクションを実行したり、あらゆるステップで特定の情報にアクセスできるかどうかを確認します。たとえば、自分の資産を表示したいときにUACをチェックし、そのボタンをクリックした後、編集、削除ボタンが表示されていなくても、コードにチェックが残っています。そして、このパターンはwebapp全体にわたって続きます。これは過剰なのでしょうか?私のウェブアプリケーションは、あちこちの小切手でうっとりしてしまいますか?特定のプロセスのすべてのステップでユーザーアクセスレベルを確認することをお勧めしますか?
答えて
はい、そうです。 特権アクションを実行する前にアクセスをチェックするたびに、侵入者が以前のチェックをバイパスし、実際にアクセスしなくても何らかの形でそのアクションを引き起こす可能性があります。いくつかの余分な小切手は、堅牢性と安心のために支払う小額の価格です。特に
は、あなたは常にyou should never trust user input以来、クライアントによって行われたそれぞれの新しい要求のため、サーバー上の権限チェックの再、およびすべてクライアントがサーバに送信するので、ユーザの管理下に潜在的にあるべきです。たとえば、クライアントインターフェースの「編集」ボタンや「削除」ボタンを無効にしても、悪意のあるユーザー(または好奇心を惹くユーザー)がユーザーを再び有効にするのを止めることは何ですか。ブラウザのデベロッパーツールを使用して、またはボタンがトリガーする実際の編集/削除要求を単に偽装することによって、
あなたが運が良ければ、サーバー側の権限チェックが行なわれていなくても、一部のユーザーには許可されます。see a bunch of deleted garbage.運がよければ、あなたのサイトに完全な管理アクセス権が与えられるかもしれません。
これ以上自分自身では答えられませんでした!非常に良い答え!リモートで追加できるのは、これをミドルウェアとして設定することだけです。 – Option
これは実際には良い練習であり、ミドルウェアはこの目標をより簡単に達成するのに役立ちます。
- 1. setMinimumBackgroundFetchIntervalに特定のNSTimeIntervalを渡すことをお勧めしますか?
- 2. ボタンをお勧めします..もしお勧めですか?
- 3. UserAccount TableをSQL Serverの他のすべてのテーブルとマッピングすることをお勧めしますか?
- 4. APIをAngular-Universal Serverで定義することをお勧めしますか?
- 5. super()を使用することをお勧めしますか?
- 6. デストラクタをオーバーライドすることをお勧めしますか?
- 7. DataContractSerializerインスタンスをキャッシュすることをお勧めしますか?
- 8. Luceneを使用することをお勧めしますか?
- 9. 私のアプリのすべてのコンポーネントにshouldComponentUpdateを使用することをお勧めしますか?
- 10. djangoプロダクションですべてのsqlクエリを記録することをお勧めしますか?
- 11. すべてのアプリをフラグメントで構築することをお勧めしますか?
- 12. 可能なすべての場所でポインタを使用することをお勧めしますか?
- 13. JSONのすべてのデータ型に文字列を使用することをお勧めしますか?
- 14. オブジェクトリテラルをハッシュテーブルとして使用することをお勧めしますか?
- 15. Pythonでソケットベースのサーバーを作成することをお勧めしますか?
- 16. インデックスアクションのみのコントローラを作成することをお勧めしますか?
- 17. 配列のインデックスをCに含めることをお勧めしますか?
- 18. すべてのクラスリポジトリリンクをクラスパスに追加することをお勧めしますか?
- 19. すべてのconst文字列を参照することをお勧めしますか?
- 20. vb.netモジュールを使用することをお勧めします
- 21. ExtJS - 私のアプリケーションコントローラをすべてアプリケーションアレイのコントローラアレイに追加することをお勧めします。
- 22. codeigniterでは、常にベースパスを含めることをお勧めしますか?
- 23. 結合モデルのIDを検証することをお勧めしますか?
- 24. スカラ用のIDEを開発することをお勧めしますか?
- 25. 2D図面の一部をキャッシュすることをお勧めしますか?
- 26. オートコンプリートフィルターのコントローラーを作成することをお勧めしますか?
- 27. 複数のdjangoフィルタを使用することをお勧めしますか?
- 28. AWSのUbuntuインスタンスにMongoDBをインストールすることをお勧めしますか?
- 29. WeakReferenceのアクティビティインスタンスを保存することをお勧めしますか
- 30. Cloud Dataflowのデフォルトのリクエストクォータを減らすことをお勧めしますか?
最後に、これは解決できない「依存する」質問の1つです。ただし、通常、リレーショナルデータベースを使用してユーザーIDを検索することで、_implicit_アクセスチェックが行われることに注意してください。 「SELECT .... WHERE USER = 123」タイプのクエリでは、ユーザは自分に属していないものを決して見ることができません。一方で、例えば、 「削除」ボタンがないにもかかわらず、悪意のあるユーザーが(たとえランダムなリソースIDであっても)削除コマンドを送信してしまうことはありません。 – Damon