asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法

字號:


    本文實例講述了asp.net網(wǎng)站防惡意刷新的Cookies與Session解決方法,是WEB程序設計中非常實用的技巧。分享給大家供大家參考。具體實現(xiàn)方法如下:
    Session版實現(xiàn)方法:
    public double time;
    public const int freetime = 1;//防刷冰凍時間間隔,當前為1秒
    #region 防惡意刷新
    if (Session.SessionID == null)
    {
    Response.End();
    }
    else if (Session["sionid"] == null)
    {
    Session["sionid"] = Session.SessionID;
    }
    if (Session["last"] == null)
    {
    Session["last"] = DateTime.Now;
    }
    else
    {
    DateTime thisTime = DateTime.Now;
    DateTime lastTime = DateTime.Parse(Session["last"].ToString());
    if (Session.SessionID == Session["sionid"].ToString())
    Session["last"] = thisTime;
    TimeSpan ts = thisTime - lastTime;
    time = ts.TotalMilliseconds;
    if (time < freetime * 500)
    {
    warm_prompt();
    }
    }
    #endregion
    public void warm_prompt()
    {
    Response.Write("<table width='778' border='0' align='center' cellpadding='3' cellspacing='2' bgcolor='#009900' style='font-size: 14px; '>");
    Response.Write(" <tr bgcolor='#FFFFFF'>");
    Response.Write(" <td><img src='/newimages/logos.gif'></td>");
    Response.Write(" <td bgcolor='#EEFFEE'為了保證您的訪問安全,請您 " + freetime + " 秒后<a href='" + Request.RawUrl + "' target='_self' style='color:#FF0000;'>點擊這里刷新</a>此頁面</td>");
    Response.Write(" </tr>");
    Response.Write("</table>");
    Response.End();
    }
    Cookies版實現(xiàn)方法:
    public double time;
    public const int freetime = 2;
    #region 防惡意刷新
    string page;
    if (Request.Cookies["page"] == null)
    {
    page = "";
    }
    else
    {
    page = HttpContext.Current.Request.Cookies["page"].Value.ToString(); //獲取cookie中存儲的url值
    }
    string strThisPage = HttpContext.Current.Request.Url.PathAndQuery.ToString();//獲取當前頁地址
    DateTime LastTime = DateTime.Now;
    if (page.Equals(strThisPage))//如果cookie中的值和當前頁相等,那么表示是刷新操作
    {
    TimeSpan ts = LastTime - DateTime.Parse(HttpContext.Current.Request.Cookies["time"].Value.ToString());
    time = ts.Seconds;
    if (time < freetime)
    {
    warm_prompt();
    }
    }
    else
    {
    //執(zhí)行操作
    Response.Cookies["page"].Value = strThisPage;
    Response.Cookies["time"].Value = LastTime.ToString();
    }
    #endregion
    public void warm_prompt()
    {
    Response.Write("<table width='778' border='0' align='center' cellpadding='3' cellspacing='2' bgcolor='#009900' style='font-size: 14px; '>");
    Response.Write(" <tr bgcolor='#FFFFFF'>");
    Response.Write(" <td><img src='/newimages/logos.gif'></td>");
    Response.Write(" <td bgcolor='#EEFFEE'為了保證您的訪問安全,頁面將在2秒后將自動跳轉到您要訪問的內容!</td>");
    Response.Write(" </tr>");
    Response.Write("</table>");
    Response.Write("<meta http-equiv="refresh" content="2";URL=" + HttpContext.Current.Request.Cookies["page"].Value.ToString() + ">");
    Response.End();
    }