java 安全认证_restful安全认证

api-key

2) 请求参数

3)时间戳, 这个参数的目的是防止请求被人拦截模拟再次发送,也即过滤使用相同的连接和参数进行重复请求

4) 请求参数的sign签名(就是把参数和参数值,结合securekey、时间戳进行加密且返回全大写的字符串,实际传输中并不传递securekey)  -->加密方式需和服务端协商保持一致

示例: GET请求链接:   http://192.168.1.22:8080/v1/info/list?apiKey=api-key&id=2&name=xx&sign=EFSDKJXNDSF&timestamp=15909090213989

3:服务端接收后:

1) 根据api-key获取securekey取得参数;这里可判断securekey的失效时间,若失效,直接拦截请求提示用户重新登录。

2) 根据时间戳与当前服务端时间比较,可自定义判断,比如大于2分钟就判断是恶意重复请求,直接拦截不进入业务处理,若在2分钟内,表示可以重复发起相同的请求。

3) 按照客户端的请求参数结合securekey、时间戳进行加密(方式与客户端一致) 。

4) 然后与sign签名进行比较,如果一致,表示是安全的用户请求,如果不一致,表示被拦截那么禁止进入业务。

时间戳的再次说明:时间戳的目的就是如果被人恶意拦截模拟重复发起请求,比如上面的完整GET请求链接,这里被拦截后只能进行恶意的重复请求。因为若修改参数在发送,那么服务端根据参数加密生成的签名肯定与客户端签名不一致,是无法通过认证的,只能利用原有参数重复发送,那么时间戳就能保护系统不被恶意大量的重复攻击。服务端获取时间戳可加入判断规则,与当前系统时间比较,若大于多少分钟,就判定为重复请求,进行拦截,若小于多少分钟,那么仍然可以请求。

完!

posted on 2018-01-19 16:04 朔望魔刃 阅读(260) 评论(0)  编辑  收藏 所属分类: java

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值