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 、实际修复方案

     

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

  • 相关阅读:
    第 1 章 第 11 题 图纸传递问题
    第 1 章 第 10 题 主键查找问题 哈希表实现
    第 1 章 第 9 题 使用未初始化数组问题 设立辅助数组实现
    第 1 章 第 8 题 分批排序问题( 扩展 ) 位向量实现
    第 1 章 第 7 题 位向量中的异常处理问题
    JAVA实现多线程处理批量发送短信、APP推送
    转载的一些面试题
    使用Flexible实现手淘H5页面的终端适配
    2016前端代码总结
    移动前端的一些坑和解决方法(外观表现)
  • 原文地址:https://www.cnblogs.com/meInfo/p/9147588.html
Copyright © 2011-2022 走看看