Maison > Java > javaDidacticiel > le corps du texte

Comment définir le cookie HttpOnly en Java ?

PHPz
Libérer: 2023-04-22 18:37:08
avant
1695 Les gens l'ont consulté

Le cookie Httponly est une solution de sécurité des cookies.

Dans les navigateurs prenant en charge les cookies httponly (IE6+, FF3.0+), si l'attribut "httponly" est défini dans le cookie, le script JavaScript ne pourra pas lire les informations du cookie, ce qui peut empêcher efficacement les attaques XSS et faire applications de sites Web plus sécurisées.

Mais les cookies J2EE4 et J2EE5 ne fournissent pas de méthode pour définir l'attribut httponly, donc si vous devez définir l'attribut httponly, vous devez le gérer vous-même.

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletResponse;
 
/**
 * Cookie Tools
 */
public class CookieUtil {
 
    /**
           * Set httponly cookie
     * @param  Response HTTP response
     * @param  Cookie cookie object
     * @param  Ishttponly is httponly
     */
    public static void addCookie(HttpServletResponse response, Cookie cookie, boolean isHttpOnly) {
        String name = cookie.getName();//Cookie name
        String value = cookie.getValue();//Cookie value
        int maxAge = cookie.getMaxAge();//Maximum survival time (milliseconds, 0 representative deletion, -1 represents the same as the browser session)
        String path = cookie.getPath();//path
        String domain = cookie.getDomain();//area
        boolean isSecure = cookie.getSecure();//Is there a security protocol? 
 
        StringBuilder buffer = new StringBuilder();
 
        buffer.append(name).append("=").append(value).append(";");
 
        if (maxAge == 0) {
            buffer.append("Expires=Thu Jan 01 08:00:00 CST 1970;");
        } else if (maxAge > 0) {
            buffer.append("Max-Age=").append(maxAge).append(";");
        }
 
        if (domain != null) {
            buffer.append("domain=").append(domain).append(";");
        }
 
        if (path != null) {
            buffer.append("path=").append(path).append(";");
        }
 
        if (isSecure) {
            buffer.append("secure;");
        }
 
        if (isHttpOnly) {
            buffer.append("HTTPOnly;");
        }
 
        response.addHeader("Set-Cookie", buffer.toString());
    }
 
}
Copier après la connexion

Il convient de mentionner que le cookie dans Java Ee 6.0 a défini httponly, donc s'il est compatible avec un conteneur compatible Java EE 6.0 (tel que Tomcat 7), vous pouvez utiliser cookie.sethttponly pour définir HTTPONLY :

cookie.setHttpOnly(true);
Copier après la connexion

Classe Java HttpCookie La méthode setHttpOnly(Boolean httpOnly) est utilisée pour indiquer si le cookie peut être considéré comme HTTPOnly. S'il est défini sur true, le cookie n'est pas accessible aux moteurs de script tels que JavaScript.

Syntaxe

public void setHttpOnly(boolean httpOnly)
Copier après la connexion

Scope

La méthode ci-dessus ne nécessite qu'un seul paramètre :

httpOnly - vrai si le cookie est HTTP uniquement, ce qui signifie qu'il est visible dans le cadre de la requête HTTP.

Retour

Non applicable

Exemple 1

import java.net.HttpCookie;  
public class JavaHttpCookieSetHttpOnlyExample1 {  
  public static void main(String[] args) {  
    HttpCookie  cookie = new HttpCookie("Student", "1");  
    // Indicate whether the cookie can be considered as HTTP Only or not.  
        cookie.setHttpOnly(true);  
    // Return true if the cookie is considered as HTTPOnly.  
System.out.println("Check whether the cookie is HTTPOnly: "+cookie.isHttpOnly());  
     }  
 }
Copier après la connexion

Sortie :

Vérifiez si le cookie est HTTPUniquement : vrai

Exemple 2

import java.net.HttpCookie;  
public class JavaHttpCookieSetHttpOnlyExample2 {  
    public static void main(String[] args) {  
        HttpCookie  cookie = new HttpCookie("Student", "1");  
        // Indicate whether the cookie can be considered as HTTP Only or not.  
            cookie.setHttpOnly(false);  
        // Return false if the cookie is not considered as HTTPOnly.  
    System.out.println("Check whether the cookie is HTTPOnly: "+cookie.isHttpOnly());  
   }  
}
Copier après la connexion

Sortie :

Vérifiez si le cookie est HTTP uniquement : faux

Exemple 3

import java.net.HttpCookie;  
public class JavaHttpCookieSetHttpOnlyExample3 {  
    public static void main(String[] args) {  
        HttpCookie cookie1 = new HttpCookie("Student1", "1");  
        HttpCookie cookie2 = new HttpCookie("Student2", "2");  
        //Indicate whether the cookie can be considered as HTTP Only or not.  
        cookie1.setHttpOnly(true);  
        cookie2.setHttpOnly(false);  
        System.out.println("Check whether the first cookie is HTTPOnly:"+cookie1.isHttpOnly());  
        System.out.println("Check whether the second cookie is HTTPOnly:"+cookie2.isHttpOnly());  
       }  
    }
Copier après la connexion

Sortie :

Vérifiez si le premier cookie est HTTPOnly :true
Vérifiez si le deuxième cookie est HTTPOnly :false

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!