zoukankan      html  css  js  c++  java
  • 接口的防刷办法

    为什么会有人要刷接口?

    1、牟利

    黄牛在 12306 网上抢票再倒卖。

    2、恶意攻击竞争对手

    如短信接口被请求一次,会触发几分钱的运营商费用,当量级大了也很可观。

    3、压测

    用 apache bench 做压力测试。

    4、当程序员无聊的时候


    什么是刷接口的"刷"字?

    1、次数

    2、频率

    频繁,可能 1 秒上千次

    3、用户身份难以识别

    可能会在刷的过程中随时换浏览器或者 ip


    判断接口是否是恶意?

    根据用户粒度,如果该用户符合上面提到的“刷”的概念,就是恶意的。


    用户粒度如何划分?

    1、当前网页

    优点:无
    缺点:没有任何意义,一刷新页面用户的身份就变了

    2、session

    优点:伪造成本一般(可以理解成一个浏览器对应了一个用户)
    缺点:当用户手动清除 cookie 的时候即失效

    3、ip

    优点:伪造成本高
    缺点:要考虑一个公司、一个小区的人一般会共享一个 ip,所以适当的要放宽对单一 ip 的请求限制

    ip 信息是存在请求头里的,而 https 对请求本身做了加密,可以防止 ip 信息被伪造或篡改。所以推荐服务器采用 https 传输。


    当知道接口是恶意请求时,我们该怎么做?

    一、直接拒绝访问

    优点:简单粗暴
    缺点:简单粗暴

    二、返回“操作频繁”的错误提示

    优点:提示友好
    缺点:会把确实是操作比较频繁的真实用户拦截

    三、验证码

    1、图形

    2、滑块

    3、找不同

    优点:精准识别请求是真人还是机器发出的,二次筛选出真正的用户
    缺点:不够人性化,用户操作时间长、体验差


    总结

    安全问题是长期的和攻击者斗智斗勇的问题,没有一劳永逸的解决方案,不断交锋,不断成长


  • 相关阅读:
    JSONObject简介
    android:layout_gravity 和android:gravit的区别?
    CountDownTimer,0,0
    java应用集锦9:httpclient4.2.2的几个常用方法,登录之后访问页面问题,下载文件
    HttpClient学习系列 -- 学习总结
    创建多线程的HttpClient
    HttpClient4.X 升级 入门 + http连接池使用
    Java Executors(线程池)
    [微软官方]SQLSERVER的兼容级别
    vSphere Client 连接ESXi 或者是vCenter 时虚拟机提示VMRC异常的解决办法
  • 原文地址:https://www.cnblogs.com/xjnotxj/p/9024962.html
Copyright © 2011-2022 走看看