如果您在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攻击实例——Yamanner蠕虫攻击。该攻击利用了Yahoo Mail的一个漏洞,当用户查看包含恶意JavaScript代码的邮件时,该代码会在用户的浏览器中执行。通过Ajax技术,病毒可以...
最后,提出了针对XSS攻击的有效防御策略,如输入验证与过滤、输出内容的转义、配置Content Security Policy(CSP)和启用HttpOnly Cookie属性等方法。 适用人群:网络安全技术人员,前端和后端开发者。 使用场景及目标...
标签中的“工具”可能指的是可以用来检测和防御XSS攻击的工具,如OWASP ZAP、Burp Suite等安全测试工具,它们可以帮助开发者识别潜在的XSS漏洞,并提供修复建议。 压缩包中的文件“PHP中SQL注入与跨站攻击的防范....
3. **安全Cookies**:将Cookies标记为`HttpOnly`,这样Cookies就不会被客户端JavaScript访问,减少了被XSS攻击的风险。 4. **教育用户**:教育用户识别和避免潜在的钓鱼链接和恶意网站,提高用户的安全意识。 总之...
- **跨站脚本攻击(XSS)**:由于JavaScript可以读写Cookie,防止XSS攻击很重要,尤其是那些包含敏感信息的Cookie。 - **同源策略**:Cookie遵循同源策略,只能被同一域名下的页面访问,除非明确设置为可跨域。 -...
* 定义:CSP通过指定有效域——即浏览器认可的可执行脚本的有效来源——使服务器管理者有能力减少或消除XSS攻击所依赖的载体。 * 特点:一个CSP兼容的浏览器将会仅执行从白名单域获取到的脚本文件,忽略所有的其他...
XSS攻击是通过注入恶意脚本到网页上,当其他用户访问该页面时,脚本会在他们的浏览器上执行,可能导致数据泄露、会话劫持等后果。XSS分为反射型、存储型和DOM型。通关练习将涵盖各种类型XSS的识别与防御,包括正确...
2. **XSS(跨站脚本)**:XSS攻击允许攻击者在用户浏览器中执行恶意脚本,可能导致会话劫持、钓鱼攻击等。DVWA提供了反射型和存储型两种XSS漏洞,学习如何防御XSS,包括正确过滤和转义用户输入,使用HTTPOnly cookie...
另一方面,防御策略包括加密Cookie内容、设置安全和HttpOnly标志、使用会话令牌等方法来降低这种风险。 使用"jimmy留言簿",用户可以模拟这些攻击和防御手段,学习如何识别潜在威胁,以及如何通过正确配置和编码...
7. **安全性考虑**:单态登录增加了系统的复杂性,同时也带来了安全风险,如CSRF(跨站请求伪造)和XSS(跨站脚本攻击)。因此,需要使用验证码、HTTPOnly Cookie和Secure Flag等手段来增强安全性。 8. **分布式...
6. **安全性**:Asp.Net Forums 会包含防止SQL注入、XSS攻击等安全措施,通过源码可以学习如何使用参数化查询、验证用户输入、设置HttpOnly Cookie等方法来提升应用安全性。 7. **用户认证与授权**:论坛系统通常有...
Web安全专项技术培训是针对网络安全领域中的一个重要方向——Web应用安全进行深入学习和探讨的专题。Web应用在现代社会中无处不在,从电子商务、社交媒体到公共服务,都离不开Web技术的支持。然而,随着Web应用的...
6. **安全性**:论坛系统必须考虑SQL注入、跨站脚本攻击(XSS)等安全问题。学习如何通过参数化查询、验证输入和使用HttpOnly cookie来提高安全性。 7. **缓存管理**:为了提高性能,论坛可能会利用ASP.NET的缓存机制...
2. **Content Security Policy (CSP)**:通过配置CSP,限制了哪些源可以加载资源,防止跨站脚本(XSS)攻击。 3. **X-Frame-Options**: 防止点击劫持,通过设置X-Frame-Options头来禁止在iframe中嵌入页面。 4. **...
对用户输入进行验证可以防止各种类型的攻击,如跨站脚本(XSS)和跨站请求伪造(CSRF)。输出编码则能确保敏感数据在显示时不会被解释为代码执行。 8. 安全的会话管理(Secure Session Management) 会话管理涉及...
6. **安全性考虑**:电子商务网站对数据安全有高要求,如防止SQL注入、XSS跨站脚本攻击等。ASP.NET提供了多种内置的安全机制,如验证控件、AntiForgeryToken、HttpOnly Cookie等,确保用户信息的安全。 7. **部署与...
此外,防止SQL注入和XSS攻击是保护网络通信安全的另一重要方面。在Java编程中,应避免直接使用用户输入的数据构造SQL查询,而是采用预编译的PreparedStatement或使用ORM框架如Hibernate来防止SQL注入。对于防止XSS...
OWASP聚宝盆项目可能包含关于如何防止XSS攻击的指导,例如使用HTTPOnly Cookie、输入验证、输出编码等方法。 除了HTML安全,www-project-cornucopia还可能涵盖其他关键话题,如SQL注入防御、会话管理、访问控制、...
### Cookie之困——详解及其安全性问题 #### 一、引言 随着互联网技术的发展,Cookie 成为了维护用户会话状态的重要工具。然而,在方便的同时,它也带来了一系列的安全隐患。本文将基于“Cookie之困”这一主题,...
为了提高安全性,可以设置`secure`参数,只在HTTPS环境下创建Cookie,以及设置`httpOnly`防止JavaScript代码被XSS攻击: ```javascript $.cookie('mySecureCookie', 'secure value', { secure: true, // 只在HTTPS...