`

HttpOnly——防XSS攻击的方法之一

 
阅读更多

如果您在cookie中设置了HttpOnly属性,那么通过js脚本将无法读取到cookie信息,这样能有效的防止XSS攻击。

 

将cookie设置成HttpOnly是为了防止XSS攻击,窃取cookie内容,这样就增加了cookie的安全性,即便是这样,也不要将重要信息存入cookie。

如何在Java中设置cookie是HttpOnly呢?
Servlet 2.5 API 不支持 cookie设置HttpOnly
http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.5/docs/servlet-2_5-mr2/

建议升级Tomcat7.0,它已经实现了Servlet3.0
http://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/http/Cookie.html

但是苦逼的是现实是,老板是不会让你升级的。
那就介绍另外一种办法:
利用HttpResponse的addHeader方法,设置Set-Cookie的值
cookie字符串的格式:key=value; Expires=date; Path=path; Domain=domain; Secure; HttpOnly

//设置cookie

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");

 

//设置多个cookie

response.addHeader("Set-Cookie", "uid=112; Path=/; HttpOnly");

response.addHeader("Set-Cookie", "timeout=30; Path=/test; HttpOnly");

 

//设置https的cookie

response.addHeader("Set-Cookie", "uid=112; Path=/; Secure; HttpOnly");

 

参考:http://desert3.iteye.com/blog/869080

 

具体实现代码:

 

package com.comp.shp.web.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CookieFilter implements Filter {

	private static final Logger LOGGER = LoggerFactory.getLogger(CookieFilter.class);
	
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    	LOGGER.info("CookieFilter init");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
            ServletException {
        HttpServletRequest req = (HttpServletRequest) request;
        HttpServletResponse resp = (HttpServletResponse) response;
        Cookie[] cookies = req.getCookies();
        if (cookies != null) {
            Cookie cookie = cookies[0];
            String value = cookie.getValue();
            StringBuilder builder = new StringBuilder();
            builder.append("JSESSIONID=" + value + "; ");
            builder.append("HttpOnly; ");
            resp.setHeader("Set-Cookie", builder.toString());
        }
        chain.doFilter(req, resp);
    }

    @Override
    public void destroy() {
    	LOGGER.info("CookieFilter destroy");
    }

}
 然后在web.xml里添加该过滤器: 
         <filter>
		<filter-name>cookieFilter</filter-name>  
		<filter-class>com.comp.shp.web.filter.CookieFilter</filter-class>  
	</filter>
	<filter-mapping>
		<filter-name>cookieFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

 

分享到:
评论

相关推荐

    XSS跨站脚本攻击在Java开发中防范的方法

    在给定的部分内容中,提到了一种常见的XSS攻击实例——Yamanner蠕虫攻击。该攻击利用了Yahoo Mail的一个漏洞,当用户查看包含恶意JavaScript代码的邮件时,该代码会在用户的浏览器中执行。通过Ajax技术,病毒可以...

    网络攻防-XSS跨站脚本攻击详解及其防范

    最后,提出了针对XSS攻击的有效防御策略,如输入验证与过滤、输出内容的转义、配置Content Security Policy(CSP)和启用HttpOnly Cookie属性等方法。 适用人群:网络安全技术人员,前端和后端开发者。 使用场景及目标...

    XSS漏洞

    标签中的“工具”可能指的是可以用来检测和防御XSS攻击的工具,如OWASP ZAP、Burp Suite等安全测试工具,它们可以帮助开发者识别潜在的XSS漏洞,并提供修复建议。 压缩包中的文件“PHP中SQL注入与跨站攻击的防范....

    【猫客工作室】xss跨站进行cookies欺骗进后台

    3. **安全Cookies**:将Cookies标记为`HttpOnly`,这样Cookies就不会被客户端JavaScript访问,减少了被XSS攻击的风险。 4. **教育用户**:教育用户识别和避免潜在的钓鱼链接和恶意网站,提高用户的安全意识。 总之...

    javascript小工具之——cookie操作

    - **跨站脚本攻击(XSS)**:由于JavaScript可以读写Cookie,防止XSS攻击很重要,尤其是那些包含敏感信息的Cookie。 - **同源策略**:Cookie遵循同源策略,只能被同一域名下的页面访问,除非明确设置为可跨域。 -...

    前端大厂最新面试题-前端安全.docx

    * 定义:CSP通过指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除XSS攻击所依赖的载体。 * 特点:一个CSP兼容的浏览器将会仅执行从白名单域获取到的脚本文件,忽略所有的其他...

    网络安全作业-by cumt梅苑杀手.docx

    XSS攻击是通过注入恶意脚本到网页上,当其他用户访问该页面时,脚本会在他们的浏览器上执行,可能导致数据泄露、会话劫持等后果。XSS分为反射型、存储型和DOM型。通关练习将涵盖各种类型XSS的识别与防御,包括正确...

    dvwa靶场训练.rar

    2. **XSS(跨站脚本)**:XSS攻击允许攻击者在用户浏览器中执行恶意脚本,可能导致会话劫持、钓鱼攻击等。DVWA提供了反射型和存储型两种XSS漏洞,学习如何防御XSS,包括正确过滤和转义用户输入,使用HTTPOnly cookie...

    jimmy留言簿

    另一方面,防御策略包括加密Cookie内容、设置安全和HttpOnly标志、使用会话令牌等方法来降低这种风险。 使用"jimmy留言簿",用户可以模拟这些攻击和防御手段,学习如何识别潜在威胁,以及如何通过正确配置和编码...

    单态登录——只能在一个机器上登录(完整实例)

    7. **安全性考虑**:单态登录增加了系统的复杂性,同时也带来了安全风险,如CSRF(跨站请求伪造)和XSS(跨站脚本攻击)。因此,需要使用验证码、HTTPOnly Cookie和Secure Flag等手段来增强安全性。 8. **分布式...

    ASP.NET源码——[论坛社区]Asp.Net Forums v2.3.2130 官方中文版.zip

    6. **安全性**:Asp.Net Forums 会包含防止SQL注入、XSS攻击等安全措施,通过源码可以学习如何使用参数化查询、验证用户输入、设置HttpOnly Cookie等方法来提升应用安全性。 7. **用户认证与授权**:论坛系统通常有...

    Web安全专项技术培训.rar

    Web安全专项技术培训是针对网络安全领域中的一个重要方向——Web应用安全进行深入学习和探讨的专题。Web应用在现代社会中无处不在,从电子商务、社交媒体到公共服务,都离不开Web技术的支持。然而,随着Web应用的...

    ASP.NET源码——[论坛社区]DXBBS大侠论坛 v8.1 ACCESS.zip

    6. **安全性**:论坛系统必须考虑SQL注入、跨站脚本攻击(XSS)等安全问题。学习如何通过参数化查询、验证输入和使用HttpOnly cookie来提高安全性。 7. **缓存管理**:为了提高性能,论坛可能会利用ASP.NET的缓存机制...

    PyPI 官网下载 | djangosecure-0.0.6.tar.gz

    2. **Content Security Policy (CSP)**:通过配置CSP,限制了哪些源可以加载资源,防止跨站脚本(XSS)攻击。 3. **X-Frame-Options**: 防止点击劫持,通过设置X-Frame-Options头来禁止在iframe中嵌入页面。 4. **...

    java毕业设计——基于Java的两个通用安全模块的设计与实现 (2).zip

    对用户输入进行验证可以防止各种类型的攻击,如跨站脚本(XSS)和跨站请求伪造(CSRF)。输出编码则能确保敏感数据在显示时不会被解释为代码执行。 8. 安全的会话管理(Secure Session Management) 会话管理涉及...

    ASP.NET源码——[电子商务]易想.NET免费开源商城仿当当网版.zip

    6. **安全性考虑**:电子商务网站对数据安全有高要求,如防止SQL注入、XSS跨站脚本攻击等。ASP.NET提供了多种内置的安全机制,如验证控件、AntiForgeryToken、HttpOnly Cookie等,确保用户信息的安全。 7. **部署与...

    利用java编程,提高计算机网络通信安全.zip

    此外,防止SQL注入和XSS攻击是保护网络通信安全的另一重要方面。在Java编程中,应避免直接使用用户输入的数据构造SQL查询,而是采用预编译的PreparedStatement或使用ORM框架如Hibernate来防止SQL注入。对于防止XSS...

    www-project-cornucopia:OWASP Foundation Web存储库

    OWASP聚宝盆项目可能包含关于如何防止XSS攻击的指导,例如使用HTTPOnly Cookie、输入验证、输出编码等方法。 除了HTML安全,www-project-cornucopia还可能涵盖其他关键话题,如SQL注入防御、会话管理、访问控制、...

    cookie之困

    ### Cookie之困——详解及其安全性问题 #### 一、引言 随着互联网技术的发展,Cookie 成为了维护用户会话状态的重要工具。然而,在方便的同时,它也带来了一系列的安全隐患。本文将基于“Cookie之困”这一主题,...

    jquery.cookies.2.2.0.js.zip

    为了提高安全性,可以设置`secure`参数,只在HTTPS环境下创建Cookie,以及设置`httpOnly`防止JavaScript代码被XSS攻击: ```javascript $.cookie('mySecureCookie', 'secure value', { secure: true, // 只在HTTPS...

Global site tag (gtag.js) - Google Analytics