4

デフォルトでは、ユーザーがログイン フォームを送信して認証されると、ログアウトする前に最後にアクセスしたかった URL (リクエスト キャッシュから取得) またはルート URL にリダイレクトされます。さらに、spring-security-redirectフォーム送信要求で ' ' パラメータが見つかった場合、そのパラメータの値にリダイレクトされます。

この機能を使用したいのですが、このスレッドでLuke Taylorが、それはセキュリティ リスクになると述べました。そのためには追加のフォーム フィールドを使用し、LoginSuccessHandler をカスタマイズしてそのフォーム フィールドを取得し、必要に応じて使用する必要があります。 .

彼が言及したセキュリティ リスクと、独自のカスタム ロジックを使用する代わりに、Spring Security が既に提供している機能を使用すべきではない理由を理解できません。機能を使用したい理由は、上記のスレッドの OP と同じです。

4

1 に答える 1

3

背後にある攻撃は、ある種のクロスサイト リクエスト フォージェリ(CSRF 攻撃)です。

攻撃者 (A) が変更されたリンクを誰か (B) に送信し、B がこのリンクを少し見て、それがあなたのアプリケーションであることを確認した場合、攻撃者はこのリンクをクリックする可能性があります。

人 B は自分の資格情報を入力し、ログインします。

しかし今、その人物 B の資格情報を使用して、リダイレクトが実行されます。

したがって、各ユーザーがhttp://yourApp/spendSomeMoney=100を呼び出すことでいくらかのお金を使うことができるアプリケーションがあると想像してください -- (そのアプリケーションの最初の障害は、これが POST ではなく GET であることです)

(A) このリンクを (B) 送信すると想像してください: http://yourApp/login.jsp?spring-security-redirect=http://yourApp/spendSomeMoney=100

問題がわかります。

一般に、リダイレクトを使用するかどうかに関係なく、CSRF 保護フィルターを使用することを強くお勧めします。

于 2012-04-12T18:52:17.973 に答える