xblueskyleng
xblueskyleng
2012-05-10 10:26
浏览 492
已采纳

如何防止模拟的http行为

现在我有一串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可以很简单地设置一下就伪装出来。
如果说在发送请求前要求输入验证码,从那个页面的操作流程来讲,会影响用户体验
现在不知道用什么办法比较有效地阻止这种行为

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • yilong511
    yilong511 2012-05-15 11:45
    已采纳

    简单的,除了加验证码外没其他快速解决的办法了
    但是若影响了体验
    可以照你说的,在页面加个隐藏域,但是提交的时候用JS混淆一下,36位变72位,那个JS也混淆一下就OK了

    点赞 评论
  • sq_zhuyi
    路人乙e 2012-05-10 13:34

    因为http请求是透明的,所以除了验证码,也只能在服务器端做IP限制

    点赞 评论
  • yukaiZhao
    玉开 2012-05-11 10:14

    不能完全防止的,只能通过验证码,而验证码并非完全可靠,有很多破解程序。

    这个除了验证码之外还可以根据业务逻辑来设定一些规则尽量规避,比如说论坛发贴,可以设定注册帐户多长时间不允许发帖,发完一个帖子之后必须间隔多长时间之后才可以发第二个帖子;如果积分达不到不让发图片,不让发链接。

    点赞 评论
  • iteye_15550
    iteye_15550 2012-05-11 15:56

    你可以把这个隐藏域的值放到数据库里面,没一分钟就变化一次,自己内部系统发起请求时去后台取这个值,如果不相等就直接return

    点赞 评论

相关推荐