zoukankan      html  css  js  c++  java
  • Appscan漏洞之会话标识未更新

      本次针对 Appscan漏洞 会话标识未更新 进行总结,如下:

    1. 会话标识未更新

    1.1、攻击原理

      在认证用户或者以其他方式建立新用户会话时,如果不使任何现有会话标识失效,攻击者就有机会窃取已认证的会话,此漏洞可结合XSS获取用户会话对系统发起登录过程攻击。

    1.2、APPSCAN测试过程

      AppScan会扫描“登录行为”前后的Cookie,其中会对其中的会话信息进行记录,在登录行为发生后,如果cookie中这个值没有发生变化,则判定为“会话标识未更新”漏洞

    1.3、修复建议

      1. 始终生成新的会话,供用户成功认证时登录,防止用户操纵会话标识,请勿接受用户浏览器登录时所提供的会话标识;在对新用户会话授权之前废除任何现有会话标识。

      2. 对于不为会话标识 cookie 生成新值的平台(例如 ASP),请利用辅助 cookie。在该方法中,将用户浏览器上的辅助 cookie 设置为随机值,并将会话变量设置为相同值。如果会话变量和 cookie 值从不匹配,请废除会话,并强制用户再次登录。

      3. 若使用的是Apache Shiro安全框架,可使用SecurityUtils.getSubject().logout()方法,参考:http://blog.csdn.net/yycdaizi/article/details/45013397

    1.4、修复代码样例

      在登陆页面中添加如下代码:

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%
        request.getSession().invalidate();//清空session
        Cookie cookie = request.getCookies()[0];//获取cookie
        cookie.setMaxAge(0);//cookie过期
    %>

      在验证登陆成功前添加如下代码:

    try {
        request.getSession().invalidate();  
        if (request.getCookies() != null) {  
           Cookie cookie = request.getCookies()[0];// 获取cookie  
           cookie.setMaxAge(0);// cookie过期  
        }  
    } catch (Exception e) {  
         e.printStackTrace();  
    session = request.getSession(true); 

    1.5、例外处理

      登录前后会话确实已更新,则可视为误报

    1.6 、实际修复方案

     

    在登录成功之后,加入图上红框中的代码。

  • 相关阅读:
    Shiro理解与总结
    spark教程(14)-共享变量
    Hive 教程(十)-UDF
    multivariate_normal 多元正态分布
    windows 安装 python 踩坑记录
    EM 算法(三)-GMM
    EM 算法(二)-KMeans
    EM 算法(一)-原理
    sklearn-GDBT
    集成学习-Boosting 模型深度串讲
  • 原文地址:https://www.cnblogs.com/meInfo/p/9147588.html
Copyright © 2011-2022 走看看