本文实例讲述了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();
}