دکمه back در IE و کاهش امنیت

من توی سایت برایlogin سشن(session) تعریف کردم و خوب کار می کنه فقط یه مشکل داره اگر کسی با زدن دکمه خروج از سایت خارج شود و از پشت pc بلند بشه یه نفر دیگه می تونه با زدن دکمهback در IE به صفحات وی دسترسی پیدا کنه
لطفا راهنمایی کنین پیشاپیش ممنونم
 

amirlol

Well-Known Member
خوب زمانی که خروج میشه شما باید همه session ها رو پاک کنید !


** با چه زبانی ؟
 
asp.net
یعنی شما می گین با زدن back صفحه refresh میشه و دنبال اطلاعات session می گرده و پیدا نمی کنه و بهlogin بر میگرده؟
در صورتی که من فکر نمی کنم refresh بشه.
 

mosyhey

Member
به نظر من شما باید اول از همه جلوی کش شدن سایتتان در کامپیوتر بازدید کننده را بگیرید که من با asp classic بلدم و net. را نه.
یوزر و پسوردی که کش هم بشود بسیار بد است.
 

amirlol

Well-Known Member
وقتی session رو می بندی ! فقط و فقط سیستم به صورتی در می یاد که کثل یه SCREEN SHOUT میشه و کافیه اول هر صفحه session ها چک بشه
 
به نظر من شما باید اول از همه جلوی کش شدن سایتتان در کامپیوتر بازدید کننده را بگیرید که من با asp classic بلدم و net. را نه.
یوزر و پسوردی که کش هم بشود بسیار بد است.

دقیقا منظورم همینه حالا چی کار کنم؟
تو mail.yahoo اتفاق جالبتری می افته بعد ازsignout هر وقتback را درIE بزنیم به صفحه login بر می گردونه انگار دارهback را مدیریت می کنه.
اگر کسی راه حل را در زبانASP.net می دونه لطفا راهنمایی کنه چون من خیلی گیرم
 

mosyhey

Member
ابتدا باید جلوی کش شدن را بگیرید. اگر توانستید جلوی کش شدن را بگیرید وقتی کاربر پس ار لاگ اوت کلید back را زد، صفحه دوباره از سرور تقاضا می شود و با یک اعتبار سنجی ساده در ابتدای صفحات می توان تعین کرد که اگر کاربر سکشن معتبر ندارد او را به صفحه لاگ این بفرستیم.
من دستوراتی که مانع کش شدن در asp classic می شود را می گذارم امیدوارم کمکی بکند.
کد:
<%
Response.Expires=-1
Response.ExpiresAbsolute=Now()-2
Response.AddHeader"pragma","no-cache"
Response.AddHeader"cache-control","private"
Response.CacheControl="No-Store"
%>
 
  • Like
Reactions: MDP

morTeza_CS

New Member
فکر کنم یه کم دیر اومدم تو بحثتون .
راهی پیدا کردید ؟؟؟
نظره من اینه که شما Session رو که پاک کنید و در نهایت برای اطمینان بیشتر () Session.abandonکنید .....شخص بعدی اگر دکمه Back رو هم بزرنه فقط میتونه اطلاعات قبلی رو ببینه ، که Cache خود مرورگر هست ، به محض اینکه کاربر عملی انجام بده چون Session ی وجود نداره قاعدتا به صفحه ورودی منتقل خواهد شــــد.
اگه راه بهتری پیدا کردید حتماً بگید
 
[LTR]
کد:
using System;
using System.Web;

namespace TT.Web.HttpModules
{
    /// <summary>
    /// HttpModule to prevent caching 
    /// </summary>
    public class NoCacheModule : IHttpModule
    {
        public NoCacheModule()
        {
        
        }

        #region IHttpModule Members

        public void Init(HttpApplication context)
        {
            context.EndRequest += (new EventHandler(this.Application_EndRequest));
        }

        public void Dispose()
        {
        }

        private void Application_EndRequest(Object source, EventArgs e)
        {
           
            context.Response.Expires=-1;
            context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-100);
            context.Response.AddHeader("pragma", "no-cache");
            context.Response.AddHeader("cache-control", "private");
            context.Response.CacheControl = "no-cache";
        }

        #endregion
    }
}
[/LTR]
من ای کد را پیدا کردم که asp.net هست ولی بلد نیستم استفاده کنم
 
جواب سوال مطرح شده در این topic:
یک کلاس ایجاد کنید(.css)و این کد را داخل آن بنویسید :
کد:
using System;
using System.Web;
using System.Web.UI;

public class NoCacheModule : IHttpModule
{
    public NoCacheModule()
    {
    }

    #region IHttpModule Members

    public void Init(HttpApplication context)
    {
        context.EndRequest += (new EventHandler(this.Application_EndRequest));
    }

    public void Dispose()
    {
    }

    private void Application_EndRequest(Object source, EventArgs e)
    {
        HttpApplication application = (HttpApplication)source;
        HttpContext context = application.Context;
        context.Response.ExpiresAbsolute = DateTime.Now.AddDays(-100);
        context.Response.AddHeader("pragma", "no-cache");
        context.Response.AddHeader("cache-control", "private");
        context.Response.CacheControl = "no-cache";
    }

    #endregion
}
حالا در web.config زیر system> این کد را بنویسید
کد:
<httpModules>
      <add name="myNoCacheModule" type="NoCacheModule"/>
    </httpModules>

تا اینجا یک فاز کارو انجام دادین در فاز دوم :
با زدن دکمه خروج یهsession خاصی را مقدار دهی کنید
(مثلا
کد:
Session["SessionUid"] = "Exit";
)

و در صورتی که یک نفر با userو pass معتبر وارد شد آن را null کنید
حالا در بالای هر صفحه این کد را اضافه کنید
کد:
 protected void Page_Load(object sender, EventArgs e)
    {

        if (!Page.IsPostBack)
        {
            if (Session["SessionUid"] != null)
                Response.Redirect("LogIn.aspx");
 

جدیدترین ارسال ها

بالا