读书人

今天很无聊写了一个防止ajax代码恶意

发布时间: 2012-05-12 15:39:31 作者: rapoo

今天很无聊,写了一个防止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。
[解决办法]
感谢楼主分享
[解决办法]
探讨

加上缓存。
双管下。
防调一次删一次cookies/根本没有保存cookies。

[解决办法]
探讨

因为考虑到cookie是可以在客户端被js篡改的,所以整个过程没有用到cookie
至于查询缓存的话,也可以通过该方法来考虑,如果检测通过,那么查询数据库,并生成静态页面,第二次来查询的话,如果在设定时间内就直接转发到生成的静态页面中,否则就查询数据库,并写入到页面上

[解决办法]
太高深
[解决办法]
学习了,呵呵

读书人网 >Ajax

热点推荐