本文实例讲述了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();
}
标签:
asp.net
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!