本文实例讲述了asp.net网站防恶意刷新的Cookies与Session解决方法,是WEB程序设计中非常实用的技巧。分享给大家供大家参考。具体实现方法如下:
Session版实现方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
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版实现方法:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
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();
}
|
相信本文所述对大家的asp.net程序设计有一定的借鉴价值。