java开发增删改查的接口时,怎么防止外人调用?

特别是对数据库的数据进行删除.大家都是怎么防止外人调用?
怕别人恶作剧
因为我这边写的接口
比如:xxx.com/delete?id=1


    @RequestMapping(value="/delete",method=RequestMethod.POST)
    public void delete(int id,HttpServletResponse res) throws IOException{
        res.setContentType("text/html;charset=utf-8");
        ItemInfoImpl.delete(ItemInfoImpl.getById(id));
        res.getWriter().print("{\"msg\":\"删除成功\"}");
    }

delete方法里的代码就简简单单是这样..

阅读 7.1k
12 个回答
  1. 身份验证
  2. 权限判定

1、令牌机制
2、IP白名单
3、HTTP basic 认证
4、还有很多

很多的,我们是token效验,正确后才执行

方法写的有问题啊,假设你不是前后端分离的情况,用session存储登录态,最简单的考虑情况,那在删除之前,你前端post过来的数据,应该至少是id,uid,然后判断一下session的id和传来的是否一致,才删除啊。

最好的做法是用token啊,也就是鉴权,你可以用uid,啥啥的,加固定盐值,然后MD5或者用其他加密方式,之后,鉴权通过的删除。也可以用现成的jwt token等解决方案。

直接用个id就删,是肯定不行的啦。

1.所有请求都不能在地址栏拼接
2.拦截器判断人员是否登录
3.划分人员权限 不同的人员只能请求他有权操作的地址
4.判断单据权限 登录人是否是删除数据的创建人(或者判断登录人角色是否有权删除)
还有很多方法都可以实现

用户访问登录接口

验证密码

用户名密码匹配

session中存入数据标记为已登录

在filter或spring mvc 的 Intercepter中拦截session没有标记的请求

可以实现一个接口,接口里面只有get方法,没有set方法。

上面几位都说的很详细了,就不重复了,我就讲过我们用的,你可以试试 shiro 框架

新手上路,请多包涵

目前所掌握的,有两个权限安全校验框架:1、spring security 2、 shiro 配合控制层实现 安全校验。 具体-- google 下呗

新手上路,请多包涵

提供视图 不提供具体数据表 删除操作最好是逻辑删除 不是物理删除

前后不分离的情况:

  1. REST API接收到请求以后,可以从session中获取当前登录的用户信息,或者其他可以唯一标示当前访问者的信息.
  2. 如果该信息存在,可以实现一套用户-接口的权限校验功能,判断当前用户是否有权限调用该接口
  3. 用户不存在,或者没有权限,返回约定定义的错误码和消息.
  4. 可以基于Spring Security实现以上功能,但是过于重,建议自己实现.包括防CSRF等功能.

前后分离的情况

  1. 为业务方分配bizKey和加密的key,请求方将参数按照约定的规范进行加签,同时将bizKey放置在request header中,传递给服务方;服务方首先校验bizKey是否存在,然后再取出对应的加解密key,对请求进行验签; 这里面的加签验签,可以通过MD5/ASE/RSA/3DESC等算法,将参数按照英文字母排序等方式进行加签验签.
  2. 使用IP白名单,白名单内业务方可以调用
  3. token模式,业务方请求前获取token,携带token请求服务方.校验token的合法性.
  4. 以上方式可以混合使用

自己的意见,还是请大家多指正

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题