Spring中使用拦截器配置HttpOnly,来提升WEB应用程序的安全性
2017-05-24 23:02
465 查看
由于最近公司的项目做了安全评测,里面有一项是关于HttpOnly的.所以了总结一下... 废话不多说,先来说下它是干什么的吧.
随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息,http是不会为了下一次连接而维护这次连接所传输的信息的。所以为了在每次会话之间传递信息,就需要用到cookie和session,无论是什么,都是为了让服务器端获得一个token来检查合法性,很多时候都是在cookie中存储一个JsessionID,服务器来识别该用户,那么安全隐患也就引申而出了,只要获得这个cookie,就可以取得别人的身份,特别是管理员等高级权限帐号时,危害就大了,而XSS就是在别人的应用程序中恶意执行一段JS以窃取用户的cookie。
1. 在拦截器中将需要的操作的cookie属性,使用response进行写回.
2. 在SpringMvc的配置文件中配置拦截器. 这里配置的是对所有访问.do的控制.
随着B/S的普及,我们平时上网都是依赖于http协议完成,而Http是无状态的,即同一个会话的连续两个请求互相不了解,他们由最新实例化的环境进行解析,除了应用本身可能已经存储在全局对象中的所有信息外,该环境不保存与会话有关的任何信息,http是不会为了下一次连接而维护这次连接所传输的信息的。所以为了在每次会话之间传递信息,就需要用到cookie和session,无论是什么,都是为了让服务器端获得一个token来检查合法性,很多时候都是在cookie中存储一个JsessionID,服务器来识别该用户,那么安全隐患也就引申而出了,只要获得这个cookie,就可以取得别人的身份,特别是管理员等高级权限帐号时,危害就大了,而XSS就是在别人的应用程序中恶意执行一段JS以窃取用户的cookie。
1. 在拦截器中将需要的操作的cookie属性,使用response进行写回.
package com.pzdf.eqihua.sms.interceptor; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; /** * <p>使用拦截器设置cookie的HttpOnly.</p> * <p>是为了防止XSS攻击,窃取cookie的内容.</p> * @author chenkangjing * @time 2017.5.24 */ public class HttpOnlyInterceptor implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object arg2, Exception Exception) throws Exception { } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object arg2, ModelAndView arg3) throws Exception { Cookie[] cookies = request.getCookies(); if (cookies != null) { Cookie cookie = cookies[0]; if (cookie != null) { // serlvet 2.5 不支持在 Cookie 上直接设置 HttpOnly 属性. String value = cookie.getValue(); StringBuilder builder = new StringBuilder(); builder.append("JSESSIONID=" + value + "; "); builder.append("Secure; "); builder.append("HttpOnly; "); Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.HOUR, 1); 9375 Date date = calendar.getTime(); Locale locale = Locale.CHINA; SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss",locale); builder.append("Expires=" + sdf.format(date)); response.setHeader("Set-Cookie", builder.toString()); } } } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception { return true; } }
2. 在SpringMvc的配置文件中配置拦截器. 这里配置的是对所有访问.do的控制.
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**/*.do"/> <bean class="com.pzdf.cms.intercepter.HttpOnlyInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
相关文章推荐
- 利用Httponly提升web应用程序安全性(转)
- 使用HttpOnly提升Cookie安全性
- 使用HttpOnly提升Cookie安全性
- 利用Httponly提升web应用程序安全性
- 使用HttpOnly提升Cookie安全性
- 使用HttpOnly提升Cookie安全性
- 使用HttpOnly提升Cookie安全性
- 使用HttpOnly提升Cookie安全性
- 使用HttpOnly提升Cookie安全性
- 利用Httponly提升web应用程序安全性
- 使用HttpOnly提升Cookie安全性
- 利用Httponly提升web应用程序安全性
- springMVC 配置权限拦截器时,提示: '{"http://www.springframework.org/schema/mvc":mapping}
- spring AOP拦截器的配置使用
- springboot 配置使用拦截器 interceptor
- Spring MVC 使用拦截器 HiddenHttpMethodFilter配置Rest风格的URL
- spring终结篇 -- 使用spring web应用程序配置
- 利用httponly提升应用程序安全性
- Spring使用tx标签配置拦截器动态为指定方法添加事务
- SpringMvc Interceptor拦截器的配置与使用