0

ReactJS + Spring Boot/Social/Securityを使ってWebアプリケーションを構築しました。Spring Securityのauthenticated()とcsrfの違いは何ですか?

リリース時にCSRFから保護されていることを確認したいと思います。私は箱から出して春のセキュリティのほとんどを使用し、以下の私の基本的な構成している()オーバーライドしています:

@Configuration 
@Order (SecurityProperties.ACCESS_OVERRIDE_ORDER) 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
    http 
      .authorizeRequests() 
      .antMatchers("/login/facebook").permitAll() 
      .antMatchers("/logout").permitAll() 
      .antMatchers("/api/**").authenticated() 
      .and().csrf().disable(); 
    } 
} 

バックエンドへの私(/ API/**)要求のすべてが唯一であるため、私の質問は、認証されると許可されますが、CSRFから私を守りますか?

ユーザーがSpring Socialプラグインを使用してFacebookで認証すると、バックエンドアプリケーションのエンドポイント(/ login/facebook)にコールをリダイレクトしてログインに成功します。この方法では、私は次の操作を行います。

UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(theUser.getFacebookId(), null, null); 

SecurityContextHolder.getContext().setAuthentication(authentication); 

これは、認証済みとして/ APIに行われた後続の要求が認識されることを確認します。

答えて

2

認証は、誰かが自分であると主張していることを確認する行為またはプロセスです。

Owasp:クロスサイトリクエスト偽造(CSRF)は、エンドユーザーが現在認証されているWebアプリケーションで不要な操作を強制的に実行する攻撃です。

違いは、認証は確認プロセスですが、CSRFは認証されたユーザーの利点を生かした攻撃であり、Webアプリケーションが実際に既に認証されたユーザーからのものだがユーザーは邪悪な取引が行われたことを知ってください。

  • mybank.comはウェルカムページやリストを示し
  • ユーザーは、ユーザー名とパスワードを押してログインボタン(認証)を埋めるmyBank.comのために行く

    1. ユーザー:これは、CSRF攻撃のための非常に正常な使用例ですお金を転送するオプション
    2. 涼しい写真のための非常にクールなサイトにアクセスするための珍しいポップアップを参照し、ポップアップメッセージ(おそらくxss攻撃)をクリックしてください
    3. ユーザーはmybank.comに戻り、転送が行われ、$$$$の引き出しが正常に完了しました(csrf攻撃クールな画像の邪魔なポップアップから来る)

    私が言っていることは、認証がCSRFの脆弱性を緩和しないということです。 Springを使用してCSRFの脆弱性を回避する方法はいくつかありますが、Springのドキュメントを参照して、CSRFを構成し、この脆弱性を緩和する方法に関する有用な情報を入手してください。 Spring Security CSRF attack、そしてあなたはCSRFは、OWASPサイトにアクセスしてくださいについての詳細をお知りになりたい場合はOWASP CSRF attack

    CSRF回避する方法のいくつかの例:ユーザーが行うことができます

    1. 一覧すべての重要なアクション、たとえば、パスワード変更のために、大量のメッセージを送信したり、行を削除したりするなど、二重認証プロセスを使用すると、ユーザーが知っているだけの質問、好きな食べ物、父親の名前、通常ユーザーが入力しなければならない種類の質問登録プロセス。二重認証で確認するためにアクションが行われる前に質問をしてください。
    2. すべてのhttp要求ごとにセキュリティトークンを使用し、そのトークンをアプリケーション用に検証する必要があります。悪意のあるサイトがトークン番号を知らないため、悪意のあるサイトから有効な要求が送信されないようにします。
  • 関連する問題