• asp.net网站防恶意刷新的Cookies与Session解决方法


    本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧。分享给大家供大家参考。具体实现方法如下:

    Session版实现方法:

    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版实现方法:
    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
    {
      //执行操作
      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();
    }
  • 相关阅读:
    华为手机内核代码的编译及刷入教程【通过魔改华为P9 Android Kernel 对抗反调试机制】
    AndroidStudio升级到4.0之后,出现Warning: Default Activity not found解决办法
    Python解决gensim加载doc2vec或work2vec向量训练模型文件太慢甚至无法访问的情况
    layui 上传插件控制上传文件个数(换个角度思考问题)
    CDN访问异常重定向
    sql 语句优化
    swipper全屏垂直滚动获取高度问题
    tp6.0相对于tp5.1的变化
    项目打包文件ipa包瘦身
    load和initialize的区别
  • 原文地址:https://www.cnblogs.com/sjqq/p/6478063.html
Copyright © 2020-2023  润新知