spring security防護會話僞造session攻擊

1. 攻擊場景

session fixation會話僞造攻擊是一個蠻婉轉的過程。服務器

好比,當我要是使用session fixation攻擊你的時候,首先訪問這個網站,網站會建立一個會話,這時我能夠把附有jsessionid的url發送給你。session

http://unsafe/index.jsp;jsessionid=1pjztz08i2u4i
        

你使用這個網址訪問網站,結果你和我就會公用同一個jsessionid了,結果就是在服務器中,咱們兩人使用的是同一個session。jsp

這時我只要祈求你在session過時以前登錄系統,而後我就可使用jsessionid直接進入你的後臺了,而後可使用你在系統中的受權作任何事情。網站

簡單來講,我建立了一個session,而後把jsessionid發給你,你傻乎乎的就使用個人session進行了登錄,結果等於幫個人session進行了受權操做,結果就是我可使用一開始建立的session進入系統作任何事情了。url

與會話僞造的詳細信息能夠參考http://en.wikipedia.org/wiki/Session_fixationspa

2. 解決會話僞造

解決session fix的問題其實很簡單,只要在用戶登陸成功以後,銷燬用戶的當前session,並從新生成一個session就能夠了。ip

Spring Security默認就會啓用session-fixation-protection,這會在登陸時銷燬用戶的當前session,而後爲用戶建立一個新session,並將原有session中的全部屬性都複製到新session中。get

若是但願禁用session-fixation-protection,能夠在http中將session-fixation-protection設置爲none。it

<http auto-config='true'>
	<intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" />
	<intercept-url pattern="/**" access="ROLE_USER" />
	<session-management session-fixation-protection="none"/>
</http>
        

session-fixation-protection的值共有三個可供選擇,none,migrateSession和newSession。默認使用的是migrationSession,如同咱們上面所講的,它會將原有session中的屬性都複製到新session中。上面咱們也見到了使用none來禁用session-fixation功能的場景,最後剩下的newSession會在用戶登陸時生成新session,但不會複製任何原有屬性。io

相關文章
相關標籤/搜索