如何防止用户模拟你的页面表单提交数据?

mingwj1980 2011-01-10 03:40:15
最近正好网站发现这样的情况。

就是有用户做了软件,用软件来模拟页面进行提交数据!

由于业务的需要,需要禁止用户做这样的事情

怎样做比较好?

提交按扭按下去时用request.url判断是否停留在当前页面有用么??

或者还有其它的办法么?
...全文
461 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
MSDNXGH 2011-08-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 wuyq11 的回复:]
用户登录。判断IP地址是否重复访问
验证码
记录用户操作日志
[/Quote]
可行,但对用户的禁止,时间不能太长,我们用的基本都是动态IP,猫一关,重新打开,又是新的。如果对一IP过长禁止,会影响到其它用户
dongt1 2011-08-06
  • 打赏
  • 举报
回复
帮楼主顶。。。该说的他们都说了
Jack2013tong 2011-01-21
  • 打赏
  • 举报
回复
1 验证码要复杂点,太简单的容易被识别验证码的工具识别(随机问题答案的方式较好,题库越多越好)
2 "智能识别"主要是根据提交时间间隔及内容作相应的处理
JustLovePro 2011-01-21
  • 打赏
  • 举报
回复
好像现在都是通过验证码来做的吧
子夜__ 2011-01-20
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 mingwj1980 的回复:]

。。。。。。。。。。。。。。。。。。
[/Quote]
点啥点 赶紧睡觉。。。
major 2011-01-10
  • 打赏
  • 举报
回复
可以试试判断当前访问者是否通过浏览器访问,
HttpBrowserCapabilities yourBrowser = Request.Browser;
string MyBrowser = string.Empty;
MyBrowser = yourBrowser.Browser;
if (string.IsNullOrEmpty(MyBrowser))
{
Response.Write("您的操作非法!");
Response.End();
}
whb147 2011-01-10
  • 打赏
  • 举报
回复
呵呵
要根据具体事情具体分析
不能误杀好人
chen_ya_ping 2011-01-10
  • 打赏
  • 举报
回复
加个图形码验证吧。
kocokolo 2011-01-10
  • 打赏
  • 举报
回复
客户端用activex获取用户网卡地址(限制此网卡地址登陆次数)+验证码
缪军 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 mingwj1980 的回复:]
UI元素的Id动态的,应该很难外挂,例如:
==========
动态ID我想过,那程序里获取呢?也动态咯?
[/Quote]
你把Id看做变量而不是常量就可以了,
我们在开发的时候并不直接接触UI,而是建模,页面由架构渲染,所以Id自然可以是动态的,于是意外的发现可以在一定程度上防止外挂
wuyq11 2011-01-10
  • 打赏
  • 举报
回复
用户登录。判断IP地址是否重复访问
验证码
记录用户操作日志
白s菜 2011-01-10
  • 打赏
  • 举报
回复
UI元素的Id动态的 我们一样挂 最近刚好在做群发的项目


在页面上某个图片或者什么资源文件 里面做文章 比如正常情况下访问表单页面的某个小图片 你写个session带着表单一起提交 这样找起来就很困难了 当然要是有耐心一样可以破~~
mingwj1980 2011-01-10
  • 打赏
  • 举报
回复
UI元素的Id动态的,应该很难外挂,例如:
==========
动态ID我想过,那程序里获取呢?也动态咯?
吴青峰 2011-01-10
  • 打赏
  • 举报
回复
最好在访问数据库的时候也加以判断,当然了你要想做到安全,那么在性能和页面预览速度方面就会做出一些牺牲。你不要想着,我又要很安全又要速度快的惊人,除非你用的是非人类的服务器......
吴青峰 2011-01-10
  • 打赏
  • 举报
回复
判断referer url,只起到防盗链的作用,但是和别人用软件来模拟页面进行提交数据没有一点关系。

如果想防止这种情况发生,建议用js验证的同时并且要通过服务器验证才让它的请求通过,要不就阻断其请求。
缪军 2011-01-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 mingwj1980 的回复:]
[/Quote]
UI元素的Id动态的,应该很难外挂,例如:
<span id="BoundMaterialInBillId4686" DataField="MaterialInBillId" onmouseover="showPop(this)" onmouseout="nonePop(this)" MaxLength="14"></span>
phil999 2011-01-10
  • 打赏
  • 举报
回复
P哥说的办法还是有可能被突破,那些模拟程序可以用一组匿名代理轮流提交数据

在P哥的办法之上加一些限制:

图形验证码
登录才能提交数据
  • 打赏
  • 举报
回复
如果你是根据单个用户来判断业务逻辑,就不要根据IP来判断。不要张冠李戴(把通过同一大服务商路由器的不同用户当作同一用户)。
  • 打赏
  • 举报
回复
[Quote=引用楼主 mingwj1980 的回复:]
最近正好网站发现这样的情况。

就是有用户做了软件,用软件来模拟页面进行提交数据!

由于业务的需要,需要禁止用户做这样的事情

怎样做比较好?

提交按扭按下去时用request.url判断是否停留在当前页面有用么??

或者还有其它的办法么?
[/Quote]

计算一个恰当的“惩罚时间”,然后一段时间内禁止用户再次提交。

不必太纠结这个时间,用5分钟看看访问日志报表然后断然决定就行了。只要你使用一个比较合理的方法恰好可以剔除这种用户,而几乎不会伤害到手工提交的用户,那么这个时间长度就是很好的了。
kk706 2011-01-10
  • 打赏
  • 举报
回复
1 验证码,不能是工整的字母或数字。需要模糊处理。
2 限制时间

基本同1楼内容
加载更多回复(1)

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧