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();
}
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网站防恶意刷新的Cookies与Session解决方法的更多相关文章
- ASP.NET MVC中对Model进行分步验证的解决方法
原文:ASP.NET MVC中对Model进行分步验证的解决方法 在我之前的文章:ASP.NET MVC2.0结合WF4.0实现用户多步注册流程中将一个用户的注册分成了四步,而这四个步骤都是在完善一个 ...
- ASP.NET MVC 此安装不支持该项目类型解决方法
http://www.cnblogs.com/younggun/archive/2011/03/03/1969498.html ASP.NET MVC 此安装不支持该项目类型解决方法 打开 .csp ...
- ASP.NET 4.0尚未在 Web 服务器上注册 解决方法
使用VS2010创建web应用程序时出现如下提示ASP.NET 4.0尚未在 Web 服务器上注册.为了使网站正确运行,可能需要手动将 Web 服务器配置为使用 ASP.NET 4.0,按 F1 可了 ...
- IIS发布网站:CS0016: 未能写入输出文件的解决方法
“/”应用程序中的服务器错误.-------------------------------------------------------------------------------- 编译错误 ...
- asp.net url址址中中文汉字参数传递乱码解决方法
中文乱码是网站开发中会常碰到的问题,今天我们来讲一下关于url址址中中文汉字参数传递乱码解决方法,有需要的朋友可以参考下.在cs文件里传参的时候用UrlEncode: Response.Redirec ...
- 2、vuex页面刷新数据不保留,解决方法(转)
今天这个问题又跟页面的刷新有一定的关系,虽然说跟页面刷新的关系不大,但确实页面刷新引起的这一个问题. 场景: VueX里存储了 this.$store.state.PV这样一个变量,这个变量是在app ...
- HBuilder/Mui开发ios使用上拉刷新导致滚动条无法使用的解决方法
HBuilder/Mui开发的APP使用上拉刷新,当滚动到底部是会触发上拉刷新,加载更多数据.但是ios上确是一个坑,导致滚动条无法滚动. 解决方法 放弃Mui的上拉刷新,自己使用JS实现. var ...
- ASP.NET Menu控件点击区域太小解决方法
ASP.NET自带的Menu控件点击区域比较小,基本就是文本范围和图片范围,在区域外虽然选择的项有颜色变化,但是这个时候点击是没有用的,体验不是很好 检查前台生成的HTML,是用td嵌套a标签,a标签 ...
- PHP 防恶意刷新实现代码
本质还是采用session方式进行时间比较,在单位时间内允许访问或者访问次数,如果有使用反向代理的话,也可以采用nginx配置 <?phpsession_start(); $k=$_GET[' ...
随机推荐
- 也谈编译 VS 解释
语言发展 计算机的硬件仅仅能识别0和1组成的机器指令,而机器指令是最主要的计算机语言,可是我们平时进行程序设计时肯定不会用机器语言来编程,由于用它的效率低.更让人难以理解. 因此聪明的人类发明了汇编语 ...
- maven modules
所有用Maven管理的真实的项目都应该是分模块的,每个模块都对应着一个pom.xml.它们之间通过继承和聚合(也称作多模块,multi-module)相互关联.那么,为什么要这么做呢?我们明明在开发一 ...
- 泛型Where T 说明
约束 说明 where T : struct 对于结构约束,类型 T 必须是值类型 where T : class 类约束指定类型 T 必须是引用类型 where T : IFoo 指定类型 T 必须 ...
- 利用nginx做tcp负载均衡
当前nginx-13.1已经支持tcp,ucp,unix域套接字三种负载均衡模式(http肯定支持,这个不用说).最近有需求需要对后端服务做负载均衡,因此考虑使用nginx来做. 1. 下载nginx ...
- C# OO(初级思想)
继承,多态,封装 在C#中,为了能够合理描述自然界的规律,面向对象的编程引入了继承的概念,是面向对象编程中最重要的概念之一,定义了如何根据现有的类创建新类的过程. 继承:一个类派生出来的子类具有这个类 ...
- Linux下自动备份Oracle数据库并删除指定天数前的备份
说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用 ...
- IOS 通过界面图标启动Web应用 + 全屏应用 + 添加到主屏幕
请注意!!!使用了[全屏模式之后].页面的顶部会空出一大块.而且这并不属于margin,padding,或者定位.就是单纯的空出来非常难调试.其实坑就是这里 在 iPhone「添加到主屏幕」时显示自定 ...
- 电脑不识别USB blaster驱动问题
电脑不识别USB blaster,如下图: 解决办法:手动更新 http://zhidao.baidu.com/link?url=snVT__AsbtmQ4U5EBVN05Yrgv1TPv7AdVYe ...
- windows共享文件的方法
众所周知,一个宿舍,一个公司处在一个局域网络中,在不能使用外网通信情况下,此时,我们忘带U盘或者硬盘,同学或同事之间需要拷贝资料或者数据,是不是就不能实现了呢?答案是否定的.微软为了解决这种不必要的麻 ...
- 谈一谈APP支付失败的处理
如题今天要描述一个问题是:程序在确认订单时拉起第三方支付,支付失败了,引起的问题. 为了能清楚的描述问题,我把场景复现一下,大家肯定都有过APP购物的体会,大家一定知道有一个按钮叫“确认”或者“结算” ...