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

     

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

  • 相关阅读:
    【故障处理】ORA-12162: TNS:net service name is incorrectly specified (转)
    android studio 编程中用到的快捷键
    java时间格式串
    android Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.
    linux安装vmware
    x1c 2017 安装mint18的坑——grub2
    x1c2017 8G版 win linux的取舍纠结记录
    python的try finally (还真不简单)
    kafka+docker+python
    json文件不能有注释
  • 原文地址:https://www.cnblogs.com/meInfo/p/9147588.html
Copyright © 2011-2022 走看看