我想听听你的经验?我怎样才能最好地创建用于从数据库中检索数据的 API。如果您发送视图名称或程序名称,那么在安全上使用 tankne 是否完全没问题。所以我想知道是否有人对此有经验或想法?
例如,我是否应该有一个字段来告诉连接 API 的用户可以访问什么?表和行访问。
对于 .NET API,Microsoft 有一些有用的指南和有关 API 设计的法律列表。至于为用户提供有关可访问数据的信息的数据字段,我认为这是一个好主意。对于更多特权用户,您可以以加密形式发送信息以增强安全性。
我会试一试。
您已经提到了 Web API,所以我假设您正在使用它,这意味着您在数据库之上有一个 REST API。
要做的事情:
提出要向用户公开的数据模型。这可能会以各种方式与您的数据库模型不同。如果您是一家商店,您可能有 2-3 个不同的表来存储产品,但您会希望通过一个 API 调用公开一个“产品”。
一旦你有了面向用户的数据模型,就开始编写测试。您需要对您的 Web API 控制器进行单元测试,并且您需要找到一种方法来模拟您正在进行的数据库调用。测试非常值得努力!
为了安全起见,您有很多选择。您可以从 HMAC(https://en.wikipedia.org/wiki/Hash-based_message_authentication_code)或 OAuth(创建 TOKEN 系统以验证 Web 服务调用的最佳方式?)甚至 JWT(使用 JWT 保护 WebAPI )之类的东西中进行选择)。
对用户进行身份验证后,您可以为他们分配权限。他们可以根据他们有权访问的内容进行读取、写入和更新。您可以拥有一个数据库表来潜在地控制这一点。
我建议提前考虑版本控制。我的建议是始终拥有两个版本的 API - 当前版本和以前版本。您部署 API 并在第一次替换它时支持已弃用的 API 和新的 API。不要试图支持两个以上的版本。
在通过 Web API 发送数据之前,尽量编写某种接口来抽象数据库。如果您需要,这可以帮助您在将来完全更换数据库。它还有助于单元测试。