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()); } }
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);
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.
public void setHttpOnly(boolean httpOnly)
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.
Non applicable
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()); } }
Sortie :
Vérifiez si le cookie est HTTPUniquement : vrai
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()); } }
Sortie :
Vérifiez si le cookie est HTTP uniquement : faux
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()); } }
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!