今天很无聊,写了一个防止ajax代码恶意提交的程序
在使用ajax的时候,比如在做某个增加操作的时候,传值、请求都是通过js的,而通过一些浏览器调试工具,可以轻易篡改js代码,例如在代码外面套一个for循环,循环个100次,如果服务端没有做任何验证的话,而传递过来的又都是合法数据,那么就会毫不犹豫的执行100次新增。所以需要在服务端做一个判断,如果当前请求距离上一次请求的时间在3秒之内的话就提示操作频繁,拒绝操作。如果不是,那么就是合法请求了,可以执行代码。
代码如下:
C# code
Object[] obj = null;
string userName = "a123"; //假定为session中取得的用户名
if (Session["filter"] != null)
{
obj = (Object[])Session["filter"];
}
else {
obj = new Object[] { userName, 1 };
}
long nowTime = Convert.ToInt64(DateTime.Now.ToString("yyyyMMddhhmmss"));
long lastTime = Convert.ToInt64(obj[1]);
if (nowTime - lastTime <= 3)
{
Response.Write("<script>alert('操作太过频繁!拒绝操作。')</script>");
}
else {
//执行其他操作
IList<Dictionary<String, String>> list = dao.GetList("test", Request);
dao.replaceHtml(list, tb1);
}
Session["filt
er"] = new Object[] { userName, nowTime };
------解决方案--------------------学写了
------解决方案--------------------C# code,my god!
------解决方案--------------------加上缓存。
双管下。
防调一次删一次cookies/根本没有保存cookies。
------解决方案--------------------感谢楼主分享
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------太高深
------解决方案--------------------学习了,呵呵