【问题标题】:API for retrieving/send data from/to a database用于从/向数据库检索/发送数据的 API
【发布时间】:2013-05-29 21:34:17
【问题描述】:

我想听听你的经验?我怎样才能最好地创建用于从数据库中检索数据的 API。如果您发送视图名称或程序名称,那么在安全上使用 tankne 是否完全没问题。所以我想知道是否有人对此有经验或想法?

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

【问题讨论】:

  • 查看 SAAS 架构。
  • 你可以把你所有的声望都花在赏金上,但没有人能回答你,除非你说清楚你在问什么。 “创建用于从 db 检索数据的 API”听起来像是在重新发明轮子,或者我不明白。描述你想做什么。
  • 托马斯:呵呵,明白你的意思了。我在这里要求的原因是我不会制造轮子 :) 到目前为止发现 ASP.NET MVC Web API 是一个好的开始!

标签: .net database api security


【解决方案1】:

我会试一试的。

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

要做的事情:

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

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

  3. 为了安全,您有很多选择。您可以选择 HMAC (https://en.wikipedia.org/wiki/Hash-based_message_authentication_code) 或 OAuth (Best way to create a TOKEN system to authenticate web service calls?) 甚至 JWT (Secure WebAPI with a JWT)。

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

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

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

【讨论】:

    【解决方案2】:

    对于 .NET API,Microsoft has some useful guidelineslist of laws regarding API design。至于为用户提供有关可访问数据的信息的数据字段,我认为这是一个好主意。对于更多特权用户,您可以以encrypted 的形式发送信息以增强安全性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-15
      • 2017-11-12
      • 2018-11-09
      • 2021-08-06
      相关资源
      最近更新 更多