2017-10-11 27 views
8

フラッドアタック: 要するに、ハッカーはサーバーに(クッキーなしで)ヒットして、Javaコンテナに新しいセッションの作成を強制し続けることができます。HTTPセッションの洪水攻撃を防ぐ方法

セッションを管理するためにSpring Securityを使用しています。私はjsessionidがログイン前に作成され続けることを認識しています、これは私が望むものではありません。

1)春のセキュリティの設定で:

sessionManagement().sessionCreationPolicy(SessionCreationPolicy.NEVER) 

2)JSPでセッションの作成を無効にするので、私がやった

。私はApacheのタイルを使用しているので、動的インクルードを使用しているため、すべてのjspフラグメントでセッション作成を無効にする必要があります。これは非常に面倒です。

<%@page session="false"%> 

最初の一見、それはいいですが、まだセッションが作成されているシナリオがあります。

ログインする前に、私は認証された後にしかアクセスできるURLにアクセスします、春は私をログインページにリダイレクトします。

私がリダイレクトされる前に、応答はすでに既に作成されたセッションである新しいCookieを設定するよう指示しています。

私の質問:

1)セッションフラッド攻撃は深刻な問題ですか?私は本当にそれの世話をする必要がありますか?

2)この問題を解決する方法はありますか?あらゆるベストプラクティス?

3)私のコードはどうなりますか?実際には動作するはずですが、私は既にcookieがSpringによって作成されていると思われますが、私はすでにSessionCreationPolicy.NEVERに設定しています。 Statelessに設定することはできません。ログイン後もセッションが必要です。

私は実際にDDoSと比較してセッション攻撃に関心があります。私はまた、複数ログインを防ぐために、春に.maximumSessions(1)を設定しました。しかし、上記の問題はログイン前に発生します。助けてください。ありがとう。

+1

最初は私が提案してもよいと思います。このようなコントロールです:いくつかの要求は要求をブロックし、短い時間で同じIPアドレス(例えば10秒で10の要求)から到着した場合 –

+1

私は@AngeloImmediataに同意します。あなたの目的が「一種の」DDoS攻撃であるセッションのフラッド攻撃を防ぐことであるならば、アプリケーションサーバが気にするよりもむしろそのようなことが起こらないように、より低いレベルで対策を講じてください。低レベルでは、ファイアウォールを使用することを意味します。これは 'iptables'を使ってこれを行う方法です:https://unix.stackexchange.com/questions/139285/limit-max-connections-per-ip-address-and-new-connections-per-second-with- iptable –

答えて

2

あなたのポイントは有効と思われますが、処理されないと重大な問題になる可能性があります。私はすでにこのトピックについて未解決の問題があることを発見しました。しかし、この振る舞いを制御するための作業があります。

public class ApiSecurityConfig extends WebSecurityConfigurerAdapter { 
     public HttpSessionRequestCache getHttpSessionRequestCache() { 
      HttpSessionRequestCache httpSessionRequestCache = new HttpSessionRequestCache(); 
      httpSessionRequestCache.setCreateSessionAllowed(false); 
      return httpSessionRequestCache; 
     } 

     @Override 
     protected void configure(final HttpSecurity http) throws Exception { 
      http.requestCache().requestCache(getHttpSessionRequestCache()); 
} 

詳細については、次のリンクを参照してください。

https://github.com/spring-projects/spring-security/issues/4242

How to stop Spring Security from creating a new session?

関連する問題