none
防止页面被恶意刷新 RRS feed

答案

  • 给你两个提示:

    1)客户端检查:因为页面刷新window内置对象是会被销毁并且重建的,利用这个原理我们可以写出类似的代码:

    <div id="test">
    <script type="text/javascript">
    document.write("您"+(window.name==""?"是":"已经不是")+"第一次开这个窗口!");
    window.name="blueidea";
    </script>
    </div>

    你设置一个全局变量什么的,检查频繁刷新的次数(比如超过5次被认为恶意刷新)。

    2)服务器端的方法:

    首先建立一个继承PAGE的类

    using System;

    namespace YZS.Web.UI
    {
    public class Page : System.Web.UI.Page
    {
       private bool _refreshState;
       private bool _isRefresh;

       public bool IsRefresh
       {
        get
        {
         return _isRefresh;
        }
       }

       protected override void LoadViewState(object savedState)
       {
        object[] allStates = (object[]) savedState;
        base.LoadViewState(allStates[0]);
        _refreshState = (bool) allStates[1];
        _isRefresh = _refreshState == (bool) Session["__ISREFRESH"];
       }

       protected override object SaveViewState()
       {
        Session["__ISREFRESH"] = _refreshState;
        object[] allStates = new object[2];
        allStates[0] = base.SaveViewState();
        allStates[1] = !_refreshState;
        return allStates;
       }
    }
    }

    在页面类从public class MYtest : YZS.Web.UI.Page继承,然后在页面中可通过调用

    if(IsRefresh)
         //刷新
    else

    您可以自行修改代码,计数控制是否恶意刷新。

    2010年7月28日 1:38
    版主