按行验证对数据库的 Api 请求
authenticate Api request to Database by row
假设我有一个存储用户订单的数据库Table。
Order.id
product
user
1
product1
user1
2
product2
user1
3
product2
user2
4
product1
user3
5
product2
user3
6
product3
user3
还有一个 public API 为用户提供他请求的所有订单
我想阻止用户获取其他用户的订单并只允许他们访问自己的订单。
即:
user1只能得到订单1,2
user2只能拿到订单3
user3只能得到顺序4,5,6
我该怎么做?程序的名称是什么?
来自评论:SQL 查询应该 永远不会 在任何上下文中在客户端构建。这样做会带来极其严重的安全漏洞。在对它采取任何行动之前,应验证来自客户端的任何内容。
设计您的应用程序以公开执行 authentication/authorization 请求的服务,然后 查询数据库并返回特定于经过身份验证的用户的数据,或返回数据经过身份验证的用户应该有权访问。
这可能不言而喻,但您还应该执行基本的 validation/sanitization 检查 和 在您的应用程序中使用诸如参数化 queries/prepared 语句之类的东西来进一步保护数据库中的数据免受未经授权的访问。
假设我有一个存储用户订单的数据库Table。
Order.id | product | user |
---|---|---|
1 | product1 | user1 |
2 | product2 | user1 |
3 | product2 | user2 |
4 | product1 | user3 |
5 | product2 | user3 |
6 | product3 | user3 |
还有一个 public API 为用户提供他请求的所有订单
我想阻止用户获取其他用户的订单并只允许他们访问自己的订单。
即:
user1只能得到订单1,2
user2只能拿到订单3
user3只能得到顺序4,5,6
我该怎么做?程序的名称是什么?
来自评论:SQL 查询应该 永远不会 在任何上下文中在客户端构建。这样做会带来极其严重的安全漏洞。在对它采取任何行动之前,应验证来自客户端的任何内容。
设计您的应用程序以公开执行 authentication/authorization 请求的服务,然后 查询数据库并返回特定于经过身份验证的用户的数据,或返回数据经过身份验证的用户应该有权访问。
这可能不言而喻,但您还应该执行基本的 validation/sanitization 检查 和 在您的应用程序中使用诸如参数化 queries/prepared 语句之类的东西来进一步保护数据库中的数据免受未经授权的访问。