如何为restapi创建安全规则

2024-04-26 13:09:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在开发一个Web App,它有一个角度为2的前端和一个访问PostgreSQL数据库的Flask后端。我的应用程序向我的后端发送请求,如GET /items/{user_id}GET /items/{user_id}/{item_id}POST /items/{user_id}/{item_id}

我对Web开发比较陌生,这是我第一次设计RESTAPI,如何允许用户只能访问其用户id下的项目?例如,如果他们的用户id=123 GET /items/123可以工作,但是GET /items/234不能?你知道吗

是从PostgreSQL端完成的,还是我必须在后端代码服务器代码中编写逻辑才能执行以下操作:?你知道吗

if current_user.id != req.params.user_id:
    // Send response status 403
else
    // Send response 200 with items as the body

有没有更好的方法来实现这一点?你知道吗

谢谢你。你知道吗


Tags: 代码用户sendwebid数据库appflask
1条回答
网友
1楼 · 发布于 2024-04-26 13:09:34

因为这是一个非常宽泛的问题,有很多例外,所以我会非常笼统。但这应该表示为数据库中的一对多/多对一关系。换句话说,一个用户可以拥有多个项目,但一个项目只能由一个用户拥有。您需要在Items表中有一个表示user_id或所有者ID的外键约束。您只需要在数据库中查询与请求用户ID匹配的项

为了防止用户请求其他项目,您可能必须实现某种在后端运行的中间件,以检查用户何时请求特定项目,如果用户不拥有该项目(如您所建议的),该项目将返回错误。你知道吗

不过,老实说,如果您担心它的安全性,您应该考虑重新构造API调用。因为您是基于url中的user_id参数来确定身份的,所以您向随意更改其广告ID的用户开放了自己。使用web令牌建立身份将大大增强应用程序的安全性。你知道吗

相关问题 更多 >