2010-06-13 13 views
17

Domyślnie Glassfish v3 nie ustawia flagi httpOnly na ciastkach sesji (gdy są one tworzone jak zwykle z request.getSession()).httpOnly Session Cookie + Servlet 3.0 (np. Glassfish v3)

Wiem, że istnieje metoda javax.servlet.SessionCookieConfig.setHttpOnly(), ale nie jestem pewien, czy to najlepszy sposób na zrobienie tego, a jeśli tak, to gdzie najlepiej umieścić tę linię.

okazji, oczywiście nie może być wykonane w samej serwletu (na przykład w init())

java.lang.IllegalStateException: PWC1426: 
Unable to configure httpOnly session tracking cookie property for 
servlet context /..., because this servlet context has already been initialized 

ogólniej, wolą korzystać z opcji konfiguracji np w web.xml.

Odpowiedz

21

ta jest obsługiwana przez Servlet 3.0 web.xml (patrz web-common_3_0.xsd):

<web-app> 
    <session-config> 
    <cookie-config> 
     <!--    
     Specifies whether any session tracking cookies created 
     by this web application will be marked as HttpOnly 
     --> 
     <http-only>true</http-only> 
    </cookie-config> 
    </session-config> 
</web-app> 
+0

Dzięki, zadziałało! (Wyglądałem tylko w web-app_3_0.xsd i nie zdawałem sobie sprawy, że schemat używa '') –

+0

@chris_l Nie ma za co. Nie wiedziałem też, zauważyłem, że podczas googlowania :) –

+0

Jak mogę zadeklarować web-common_3_0.xsd w moim web.xml? Uaktualniłem mój web.xml do 3.0 user6123723

3

Można również dodać <secure>true</secure> aby zwiększyć bezpieczeństwo.

<session-config> 
    <cookie-config> 
     <http-only>true</http-only> 
     <secure>true</secure> 
    </cookie-config> 
</session-config> 
+0

Bezpieczny znacznik wysyła mi wyjątek ViewExpiredException z jakiegoś powodu. czego mi brakuje? –

Powiązane problemy