设计api的时候的安全策略

比如设计api的时候,存在2个合法的调用方,比如a和b;
api分为2类:部分api需要获取到调用方的身份信息(只是拿身份信息作为输入,比如插表或者查询条件),部分不需要
a调用全部api的时候,因为a是在某网站里面调用(ajax),所以登录了,能获取到身份信息。
b直接调用不需要用户信息的api(但是这些api也会被a调用)

问题。
如果我做个拦截器,拦截所有api请求(限制条件为,必须登录才能调用),那么对b是不合理的。因为b调用的api不需要身份信息
如果我不拦截请求,那么所有api对所有的人都是public的了,任何人都可以调用不需要身份信息的api,存在安全风险。

所以想问下如何处理?

看了下Jwt,好像不太适合应用场景

DIEA
浏览 598回答 4
4回答

蛊毒传说

我简单的给你说下思路,你所谓的拦截器应该是过滤器才是,我没写过Java,但是接口倒是写过一些,我给你说下简单的思路 过滤器(也许是你说的拦截器) 接口编写需要注意的大概步骤 accessToken 判定(即使非登陆用户也可以通过特定接口授权一个动态的accessToken,看情况而定) 权限判定(可以包含路由选择,你对应的接口有相对应的权限需求,不是说统一暴力的根据是否登陆来拦截,而是根据该接口所需要的权限和访问者是否具备访问该接口的权限来做拦截判定) SQL 、XSS 之类的常规过滤拦截,特殊符号转换 参数化所有接受请求的参数 逻辑处理(如果有refer或者接口请求次序的支持需要,可以根据接口产生接口session) 数据相应与返回 标准化请求参数,数据返回类型 文档说明 以上只是编写一个接口的一个简单过程,可以根据自己的实际需求做完善和修改,因为不知道你实际的应用场景,为了安全性可能还需要做更多的安全校验

倚天杖

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

小唯快跑啊

我觉得多加一个判断的变量就好了。a调(参数,变量)b调(参数,变量)方法根据变量来确定是否要登陆。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java