请教一个数据库安全的问题?

作者站长头像
站长
· 阅读数 11
// 文章表
let tb_list = [
  {
    id: 1,
    content: "好的文章",
    // 属于哪个用户发布的
    userId: 1,
  },
  {
    id: 2,
    content: "好的文章",
    userId: 1,
  },
  {
    id: 3,
    content: "好的文章",
    userId: 2,
  },
];

// 用户表
let tb_user = [
  {
    id: 1,
    content: "用户a",
  },
  {
    id: 2,
    content: "用户b",
  },
];

现在存在一个问题是:有一个页面获取所有的文章列表,自己发布文章的显示删除按钮,别人的不显示删除按钮

之前的做法是删除接口只传 id 过去就可以删除了调用一个 del 接口 -http://localhost:8001/del?id=1但是这样子发现用户在控制台可以看到请求回来的列表数据,能够看到所有的 id因为知道请求接口,这样子发现会被用户用接口来攻击了,全部给删除了

现在的做法是用 jwt 的方式,加了一个 jwt 的方法在 header 上面,里面把用户的 id 存进去了,后端通过 jwt 可以解析出这个请求是哪个用户,然后删除的时候用 jwt 的 userId 和文字的 userId 对比,如果是同一个就可以删除

但是这个方法感觉有点怪怪的这样子数据库所有的表都要加上一个可以操作的 id 来作为权限判断还有一个就是多角色操作,因为这个文章列表,管理员在管理后台也是可以帮助删除的这样子不是每个数据都要加上一个 adminList 的字段了,并且是个数组,因为管理后台有多个管理员

现在的逻辑就是先判断用户是否匹配,不匹配则匹配管理员,感觉要崩了

因为整个系统还有很多个表,这样子不是要很大量的工作吗 T_T

回复
1个回答
avatar
test
2024-07-11

让后端拿到id后再校验下当前用户有没有权限就行

回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容