现在我有一串URL
www.xx.com?para=xxx
在页面中点击按钮后用ajax执行此URL后,后台会执行一些操作,页面通过ajax的响应结果继续完成接下来的操作。这里是没登录的情况下,没有用户标志这种session的。
现在发现有个问题,有人可以将此链接读取出来,然后网上搜个工具或者自己用HttpClient写个小程序不断并发,让后台执行了一些不必要的操作
我在页面上加个隐藏域存储个特征串,然后发送请求的时候要带上特征串
如:www.xx.com?para=xxx&code=xxxx
但是这个隐藏域人家也可以照样用如 HttpClient 解析出来,同样没法防止这种用程序模拟的访问行为
我想对IP进行访问次数和访问时间的限制,但是如果对方动态改变IP,效果也不怎么样。
用HTTP_REFERER来判断HTTP来路,神哪,HttpClient可以很简单地设置一下就伪装出来。
如果说在发送请求前要求输入验证码,从那个页面的操作流程来讲,会影响用户体验
现在不知道用什么办法比较有效地阻止这种行为
简单的,除了加验证码外没其他快速解决的办法了
但是若影响了体验
可以照你说的,在页面加个隐藏域,但是提交的时候用JS混淆一下,36位变72位,那个JS也混淆一下就OK了
因为http请求是透明的,所以除了验证码,也只能在服务器端做IP限制
不能完全防止的,只能通过验证码,而验证码并非完全可靠,有很多破解程序。
这个除了验证码之外还可以根据业务逻辑来设定一些规则尽量规避,比如说论坛发贴,可以设定注册帐户多长时间不允许发帖,发完一个帖子之后必须间隔多长时间之后才可以发第二个帖子;如果积分达不到不让发图片,不让发链接。
你可以把这个隐藏域的值放到数据库里面,没一分钟就变化一次,自己内部系统发起请求时去后台取这个值,如果不相等就直接return