zoukankan      html  css  js  c++  java
  • app防攻击办法

    方法一

    要求请求端带上一个随机字符串state(也可以是特定规则生成的,甚至是从服务器上请求过来的),服务端(用过滤/拦截器之类的实现不会影响业务代码)收到之后缓存一定的时间(长短视业务和硬件),每次请求都检查state值是否在缓存中存在(或者是否符合规则,或者是否由服务器生成),如果存在抛弃或者给出特别的响应,第一个被接受的请求就按照正常处理。
    需要注意的是,判断并缓存这是要一个原子操作。

    方法二

    请求头里带用户username和password,到服务器端做验证,通过才继续下边业务逻辑。
    有点:防止了服务器端api被随意调用。
    缺点:每次都交互用户名和密码,交互量大,且密码明文传输不安全。

    方法三

    第一次请求,要求username和password,验证通过,种cookie到客户端,app保存cookie值。
    每次请求带上cookie。
    点评:和pc上浏览器认证的原理一样了。

    方法四

    制定一个token生成规则,按某些服务器端和客户端都拥有的共同属性生成一个随机串,客户端生成这个串,服务器收到请求也校验这个串。
    缺点:随机串生成规则要保密。
    比如:一个使用PHP框架的工程,框架每次交互都会有 module和action两个参数做路由,这样的话,我就可以用下边这个规则来生成token

    app要请求用户列表,api是“index.php?module=user&action=list”
    app生成token = md5sum ('user'.'2012-11-28'.'#$@%!'.list) = 880fed4ca2aabd20ae9a5dd774711de2;
    实际发起请求为 “index.php?module=user&action=list&token=880fed4ca2aabd20ae9a5dd774711de2”

    服务器端接到请求用同样方法计算token

  • 相关阅读:
    3-1
    3-2
    习题二 8
    习题二 3
    习题二 5
    习题二 4
    习题二 6
    实验三-2未完成
    实验三
    心得
  • 原文地址:https://www.cnblogs.com/hzzll/p/6845352.html
Copyright © 2011-2022 走看看