用于从数据库检索数据/向数据库发送数据的 API

问题描述 投票:0回答:2

我想听听你的经验?如何最好地创建一个 API 以从数据库检索数据。如果您发送视图名称或过程名称,那么这对坦克安全来说不是完全没问题。所以我想知道是否有人有这方面的经验或想法?

例如,我是否应该有一个字段来告诉连接 API 的用户可以访问哪些内容?表和行访问。

.net database security
2个回答
3
投票

我会尝试一下。

您已经提到了 Web API,所以我假设您正在使用它,这意味着您在数据库之上有一个 REST API。

要做的事情:

  1. 提出您想要向用户公开的数据模型。这可能与您的数据库模型有很多不同。如果您是一家商店,您可能有 2-3 个不同的表来存储产品,但您会希望通过一次 API 调用公开一个“产品”。

  2. 一旦有了面向用户的数据模型,就开始编写测试。您需要对 Web API 控制器进行单元测试,并且需要找到一种方法来模拟您正在进行的数据库调用。测试非常值得付出努力!

  3. 为了安全,您有很多选择。您可以选择 HMAC(https://en.wikipedia.org/wiki/Hash-based_message_authentication_code)或 OAuth(创建 TOKEN 系统来验证 Web 服务调用的最佳方式?)甚至 JWT()使用 JWT 保护 WebAPI )。

  4. 用户经过身份验证后,您可以为他们分配权限。他们可以根据自己有权访问的内容进行读取、写入和更新。您可以使用数据库表来控制这一点。

  5. 我建议提前考虑版本控制。我的建议是始终拥有两个版本的 API - 当前版本和以前版本。您部署 API,并在第一次替换它时支持已弃用的 API 和新的 API。不要尝试支持两个以上的版本。

  6. 在通过 Web API 发送数据之前,尽最大努力编写某种抽象数据库的接口。如果需要,这可以帮助您在将来完全更换数据库。它还有助于单元测试。


3
投票

对于 .NET API,Microsoft 有一些有用的指南有关 API 设计的法律列表。至于为用户提供有关可访问数据的信息的数据字段,我认为这是一个好主意。对于更有特权的用户,您可以以加密的形式发送信息以增强安全性。

© www.soinside.com 2019 - 2024. All rights reserved.