天天看点

系统安全--csrf攻击、为关键cookie设置httpOnly属性(防止xss攻击)安全问题

为关键cookie设置httpOnly属性

首先,设置了HttpOnly属性的cookie变量无法被js获取,而XSS就是在别人的应用程序中恶意执行一段JS以窃取用户的cookie,所以为关键Cookie设置HttpOnly属性可以有效防止XSS攻击(Cross Site Scripting  跨站脚本攻击)。

但实际中有很多Cookie需要给前端JS使用,因此一般的安全问题只需要关注关键Cookie,即给能够唯一标识用户及登录状态的会话标识,即sessionId添加这个属性即可,因为服务器是通过sessionId来唯一识别用户的。设置成功的效果如下图所示:

系统安全--csrf攻击、为关键cookie设置httpOnly属性(防止xss攻击)安全问题

       而一般实现的方法是在拦截器中设置该属性,定义一个拦截器,实现HandlerInterceptor接口(或者Filter接口好像也是可以的,参考https://blog.csdn.net/chen940075318/article/details/72717575?locationNum=10&fps=1),添加cookie.setHttpOnly(true)的逻辑,然后写回到response中即可。

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 {


    }

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                             Object arg2) throws Exception {
        Cookie[] cookies = request.getCookies();

        if (cookies != null) {
            Cookie cookie = cookies[0];
             if (cookie != null) {
                cookie.setHttpOnly(true);
                cookie.setPath("/");
                response.addCookie(cookie);
            }
        }

        return true;
    }

}

           

相关连接:

sessionId的产生和保存:   https://blog.csdn.net/u010002184/article/details/79420844

XSS攻击原理与解决方法: https://blog.csdn.net/qq_21956483/article/details/54377947

csrf攻击

(Cross-site request forgery)跨站请求伪造

感觉跟XSS攻击差不多,主要区别在于 XSS利用站点内的信任用户,而CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。比如A用户登录了银行网站,银行在cookie中保存他的授权信息,并且此cookie没有过期,此时若点击了一个银行的执行转账等操作的恶意连接,那么就会在不知情的情况下执行此转账操作,因为在A点击此连接时,浏览器会使用用户的cookie通过身份验证,进而完成操作。

可以通过限制每次请求时必须有一定的随机码参与其中来避免csrf攻击。

相关连接:https://www.cnblogs.com/cxying93/p/6035031.html

继续阅读