为了账号安全,请及时绑定邮箱和手机立即绑定

设计api的时候的安全策略

设计api的时候的安全策略

DIEA 2019-03-01 10:28:13
比如设计api的时候,存在2个合法的调用方,比如a和b;api分为2类:部分api需要获取到调用方的身份信息(只是拿身份信息作为输入,比如插表或者查询条件),部分不需要a调用全部api的时候,因为a是在某网站里面调用(ajax),所以登录了,能获取到身份信息。b直接调用不需要用户信息的api(但是这些api也会被a调用) 问题。如果我做个拦截器,拦截所有api请求(限制条件为,必须登录才能调用),那么对b是不合理的。因为b调用的api不需要身份信息如果我不拦截请求,那么所有api对所有的人都是public的了,任何人都可以调用不需要身份信息的api,存在安全风险。 所以想问下如何处理? 看了下Jwt,好像不太适合应用场景
查看完整描述

4 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

我简单的给你说下思路,你所谓的拦截器应该是过滤器才是,我没写过Java,但是接口倒是写过一些,我给你说下简单的思路

过滤器(也许是你说的拦截器)

接口编写需要注意的大概步骤

  1. accessToken 判定(即使非登陆用户也可以通过特定接口授权一个动态的accessToken,看情况而定)
  2. 权限判定(可以包含路由选择,你对应的接口有相对应的权限需求,不是说统一暴力的根据是否登陆来拦截,而是根据该接口所需要的权限和访问者是否具备访问该接口的权限来做拦截判定)
  3. SQL 、XSS 之类的常规过滤拦截,特殊符号转换
  4. 参数化所有接受请求的参数
  5. 逻辑处理(如果有refer或者接口请求次序的支持需要,可以根据接口产生接口session)
  6. 数据相应与返回
  7. 标准化请求参数,数据返回类型
  8. 文档说明

以上只是编写一个接口的一个简单过程,可以根据自己的实际需求做完善和修改,因为不知道你实际的应用场景,为了安全性可能还需要做更多的安全校验

查看完整回答
反对 回复 2019-03-01
?
倚天杖

TA贡献1828条经验 获得超3个赞

在B类调用AJAX的时候多传一个参数,然后你后台校验是否有登录或者这个参数。如果有登录或者这个参数就给它数据,如果不符合要求就不给它数据。这样?

查看完整回答
反对 回复 2019-03-01
?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

我觉得多加一个判断的变量就好了。
a调(参数,变量)
b调(参数,变量)
方法根据变量来确定是否要登陆。

查看完整回答
反对 回复 2019-03-01
  • 4 回答
  • 0 关注
  • 597 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号