2016-05-13 2 views
1

У меня есть уязвимость, связанная с фиксацией сеанса . Чтобы устранить эту уязвимость, я меняю идентификатор сеанса после входа в систему.Сессия получает значение null в ASP.NET

У меня есть ниже веб-страниц в разных папках Мастер и транзакция.

~/Master/Login.aspx: После того, как учетные данные проверены, я устанавливаю

Response.Cookies["ASPFIXATION"].Value ="xyz"; 
Session["ASPFIXATION"] = "xyz" 

и перенаправлять ~/Master/Home.aspx

~/Master/Home.aspx: На этой странице, я проверяю значение сеанса с помощью куки значение в событии загрузки страницы.

string cookie_value = string.Empty; 
string session_value = string.Empty; 
if (Request.Cookies["ASPFIXATION"] != null) 
    cookie_value = Request.Cookies["ASPFIXATION"].Value; 
if (HttpContext.Current.Session["ASPFIXATION"] != null) 
    session_value = HttpContext.Current.Session["ASPFIXATION"].ToString(); 
if (cookie_value != g_SessionFix) 
{ 
    if (Request.Cookies["ASP.NET_SessionId"] != null) 
    { 
     Response.Cookies["ASP.NET_SessionId"].Value = null; 
     Response.Cookies["ASP.NET_SessionId"].Expires = DateTime.Now.AddDays(-1); 
    } 
    if (Request.Cookies["ASPFIXATION"] != null) 
    { 
     Response.Cookies["ASPFIXATION"].Value = null; 
     Response.Cookies["ASPFIXATION"].Expires = DateTime.Now.AddDays(-1); 
    } 
    Response.Redirect("~/Master/Login.aspx", false); 
} 

Здесь сеанс имеет значение и он валидирован.

~/Transaction/Report.aspx: Если я перенаправляюсь на эту страницу и должен проверять одну и ту же сессию и логику значений cookie на этой странице. Но здесь значение HttpContext.Current.Session["ASPFIXATION"] является null и значение HttpContext.Current.Session.IsNewSession также true

+0

не могли бы вы предоставить вам код здесь. Вам нужна дополнительная информация. – CrazyDev

ответ

0

Try переназначить значение после считывания значений, иногда она очищает значения после чтения из сессии:

if (Request.Cookies["ASPFIXATION"] != null) 
    { 
     cookie_value = Request.Cookies["ASPFIXATION"].Value; 
     Request.Cookies["ASPFIXATION"].Value = cookie_value; 
    } 

    if (HttpContext.Current.Session["ASPFIXATION"] != null) 
    { 
     session_value = HttpContext.Current.Session["ASPFIXATION"].ToString(); 
     HttpContext.Current.Session["ASPFIXATION"] = session_value; 
    } 

Если он все еще Безразлично Не работайте для вас, тогда у вас есть еще одна возможность сделать это: , если ваши данные сеанса не являются конфиденциальными, тогда попробуйте передать их в строке запроса и перенаправить переназначение страницы.

Response.Redirect("~/Master/Login.aspx?data=" + session_value +"); 
+0

Не работает. Я могу перемещаться по многим страницам в папке «Мастер». Но если я перемещаюсь в другую папку, такую ​​как Transaction, весь объект сеанса получает значение null – Priya