comment configurer httponly et le cookie de session pour l'application Web java
Salut je travaille sur le problème XSS(cross site scripting). mon application se développe sur oracle Weblogic portal. nous utilisons la version Servlet 2.5.
j'ai ajouté ci-dessous 3 lignes de code dans le filtre pour configurer httponly et les cookies sécurisés. et il fonctionne très bien.
String sessionid = req.getSession().getId();
res.setHeader("Set-Cookie", "JSESSIONID=" + sessionid + ";HttpOnly");
res.setHeader("SET-COOKIE", "JSESSIONID=" + sessionid + "; secure");
le problème est quand je me déconnecte et me connecte immédiatement dans le même navigateur je suis capable de me connecter mais après cela sur les pages jsp je reçois session timeout problème. nous utilisons apis liés à weblogic. demande.l'api getuserprinical () renvoie null.. je suppose qu'il est réglé à null.
n'importe quelle idée s'il vous plaît partager.
s'il y a d'autres moyens de mettre httponly ou secure flag, s'il vous plaît aidez-nous.
3 réponses
selon les spécificités de votre conteneur web, la modification des cookies de session gérés par conteneur au sein d'une application peut amener le serveur de l'application à rejeter la session existante et en créer une nouvelle. J'ai observé ça sur Tomcat, mais ça pourrait être similaire pour Weblogic.
si vous utilisez les Servlets 3.0, vous pouvez en fait demander au serveur de l'application de s'assurer que tous les cookies de session sont HttpOnly et sécurisé avec les fragments suivants:
<session-config>
<cookie-config>
<secure>true</secure>
<http-only>true</http-only>
</cookie-config>
</session-config>
This est une meilleure approche que de pirater manuellement les cookies avec un filtre.
FYI: j'ai aussi écrit un bibliothèque Java qui injecte un certain nombre d'en-têtes de réponse liés à la sécurité dans les applications basées sur Servlet.
vous devez utiliser la syntaxe suivante pour définir les drapeaux httponly et securu
JSESSIONID=ABC3423DF...SDF;HttpOnly;Secure
j'ai utilisé les étiquettes <http-only>
et <secure>
dans web.xml pour définir les attributs sécurisés et cela a fonctionné.
<session-config>
<cookie-config>
<http-only>true</http-only>
</cookie-config>
<session-config>