1

Spring 3.1 セキュリティを使用しています。以下は私の「spring-security.xml」の一部です

<session-management session-fixation-protection="migrateSession">
<concurrency-control max-sessions="1" expired-url="/Login.html"/>
</session-management>

session-fixation-protection="migrateSession"「Chromeブラウザ」を使用してログインし、Cookieの値をコピーして「Firefoxブラウザ」を開き、ログインページに移動してCookieを編集し、「Chromeブラウザ」から値を貼り付けると、まだ設定されていますが、ログに記録されていることがわかります私のアプリケーションに。つまり「セッション固定攻撃」が可能!!!

春のセキュリティ設定で何か見逃しましたか?

それはちょうど私の次のcofigファイルです

<http auto-config="false" access-denied-page="/" disable-url-rewriting="true">

<intercept-url pattern="/test01*" access="ROLE_USER" requires-channel="https"/>
<intercept-url pattern="/test02*" access="ROLE_USER" requires-channel="https"/>

<form-login login-page="/Login.html"/>
<logout invalidate-session="true"
        logout-success-url="/"
        logout-url="/logout"/>


<session-management session-fixation-protection="migrateSession">        
    <concurrency-control max-sessions="1" expired-url="/Login.html"/>
</session-management>

</http>

<authentication-manager>
<authentication-provider>
<user-service>    
<user name="a" password="a" authorities="ROLE_USER" />
</user-service>
</authentication-provider>
</authentication-manager>
4

2 に答える 2

8

ログイン後に Cookie をコピーした場合(前述のとおり)、それはセッション固定攻撃ではありません (少なくとも、私たちが保護している種類のものではありません)。重要なのは、ログイン時に Cookie が変更されるため、他の誰かがあなたのアカウントにアクセスできないということです。誰かが自分のアカウントに既にログインしているセッションを修正するのを止めたい場合、それは別の問題であり、この方法で簡単に保護できるものではありません.

また、この属性はデフォルトで有効になっているため、設定する必要はありません。そして、1つの<session-management>要素だけを使用してください。

于 2012-05-17T14:37:21.947 に答える
1

を提供したためsession-fixation-protection="migrateSession"です。つまり、Chrome ブラウザーからのセッションが Firefox ブラウザーのセッションにコピーされます。また、同時に 2 回目にログインするべきではありません。これは、独自のUserPrincipalおよびUserPrincipalImplクラスを提供した場合、オブジェクトのequals()およびhashCode()メソッドをオーバーライドする必要があるためです。並行制御を機能させるために試してみてください。

私の質問も参照してください。

于 2012-05-17T14:36:10.020 に答える