如何预防此类的 asp 表单重复提交
一个网页游戏,做了一个表单,可以增加用户的积分。
流程:
游戏页面(包含表单)->积分处理页面->游戏结束页面
表单只包含游戏的难度等级,游戏是否完成,通过游戏页面的javascript 判断。游戏一完成,javascript 自动提交表单。也就是说只要表单一提交,无须通过数据库比较,或者查询,就可增加积分。
访问表单多次提交的措施:
1.积分处理页面,防止表单外部提交。
2.游戏页面,生成一个随机值,分别保存在cookie 里,和表单的一个hidden input 里。到了积分处理页面,检查cookie 和表单hidden 值是否相同,如果相同,则是正常操作流程,记录积分。积分记录完成,使cookie 过期,防止用户反复提交。
现在遇到一个情况,有用户刷积分,记录了他的操作,在几秒内,数次提交表单,也就重复记录积分。
但是从已有的防范上来,我觉得是不可能做到的。
想要可以绕过cookie 值验证,只有使用专门的软件,以很快的速度提交表单,从而在服务器还在读取cookie 值的网络时间延迟过程中,就刷到积分。
可是我程序里又包含了防止外部提交的部分。爆吧之类的软件,应该不可能有作用。
特此向诸位高手求教。到底漏洞在哪里?
另1:防止外部提交的函数如下
if instr(request.servervariables("http_referer"),"http://"&request.servervariables("HTTP_HOST") )<1 then
另2:使用cookie而不是使用session 来防止反复提交,是因为服务器session过期时间太短。
流程:
游戏页面(包含表单)->积分处理页面->游戏结束页面
表单只包含游戏的难度等级,游戏是否完成,通过游戏页面的javascript 判断。游戏一完成,javascript 自动提交表单。也就是说只要表单一提交,无须通过数据库比较,或者查询,就可增加积分。
访问表单多次提交的措施:
1.积分处理页面,防止表单外部提交。
2.游戏页面,生成一个随机值,分别保存在cookie 里,和表单的一个hidden input 里。到了积分处理页面,检查cookie 和表单hidden 值是否相同,如果相同,则是正常操作流程,记录积分。积分记录完成,使cookie 过期,防止用户反复提交。
现在遇到一个情况,有用户刷积分,记录了他的操作,在几秒内,数次提交表单,也就重复记录积分。
但是从已有的防范上来,我觉得是不可能做到的。
想要可以绕过cookie 值验证,只有使用专门的软件,以很快的速度提交表单,从而在服务器还在读取cookie 值的网络时间延迟过程中,就刷到积分。
可是我程序里又包含了防止外部提交的部分。爆吧之类的软件,应该不可能有作用。
特此向诸位高手求教。到底漏洞在哪里?
另1:防止外部提交的函数如下
if instr(request.servervariables("http_referer"),"http://"&request.servervariables("HTTP_HOST") )<1 then
另2:使用cookie而不是使用session 来防止反复提交,是因为服务器session过期时间太短。
...全文
请发表友善的回复…
发表回复
jspadmin 2007-10-24
- 打赏
- 举报
服务器端严格验证是必须的,不能过多依赖客户端验证。
如果是担心session超时,可以后台使用xmlhttp定期刷新。
如果是担心session超时,可以后台使用xmlhttp定期刷新。
蒋晟 2007-10-24
- 打赏
- 举报
不过要是提交的软件也作了这样的处理就无法判断了
蒋晟 2007-10-24
- 打赏
- 举报
检查从页面下载完成到表单提交的时间
正常情况下应该是一个类似正态分布的曲线
正常情况下应该是一个类似正态分布的曲线
littlelam 2007-10-23
- 打赏
- 举报
楼主给给出地址我刷点分给你看看
1.积分处理页面,防止表单外部提交。
2.游戏页面,生成一个随机值,分别保存在cookie 里,和表单的一个hidden input 里。到了积分处理页面,检查cookie 和表单hidden 值是否相同,如果相同,则是正常操作流程,记录积分。积分记录完成,使cookie 过期,防止用户反复提交。
只这两点很容易模拟。。。
1.积分处理页面,防止表单外部提交。
2.游戏页面,生成一个随机值,分别保存在cookie 里,和表单的一个hidden input 里。到了积分处理页面,检查cookie 和表单hidden 值是否相同,如果相同,则是正常操作流程,记录积分。积分记录完成,使cookie 过期,防止用户反复提交。
只这两点很容易模拟。。。
pzhuyy 2007-10-23
- 打赏
- 举报
防止外部提交?
这只是最简单的吧,
在外部一个refer都检查得了?
连cookie都可以setcookie,隐藏表单这些意义不大,
以时间+IP+用户来控制,再结合你以前的方案来控制.
这只是最简单的吧,
在外部一个refer都检查得了?
连cookie都可以setcookie,隐藏表单这些意义不大,
以时间+IP+用户来控制,再结合你以前的方案来控制.
sery 2007-10-23
- 打赏
- 举报
有没有高手能给出一个安全合理的解决方案呢?
只要有大致的框架就好。谢谢
只要有大致的框架就好。谢谢
擒兽 2007-10-23
- 打赏
- 举报
游戏高手的键盘鼠标操作不用怀疑,都是高手。
你可以改一下模式,在游戏进行时,多一个xmlhttp线程提交积分验证数据。
你可以改一下模式,在游戏进行时,多一个xmlhttp线程提交积分验证数据。
擒兽 2007-10-23
- 打赏
- 举报
URL也可以模拟的,需要本地搭建环境,但是会丢失Session,不过Session可以利用在线持久住。
Cookies在本地,这就不用说了。
和数据安全打交道还是学银行的自定义显示事务处理,必要的数据逻辑验证少不得。
Cookies在本地,这就不用说了。
和数据安全打交道还是学银行的自定义显示事务处理,必要的数据逻辑验证少不得。