一种允许用户直接连接到数据库的API

时间:2010-01-10 21:59:27

标签: database security api

我使用过很多API,但这通常不是一件容易的事。弄乱POST请求然后尝试处理XML是一件痛苦的事。我认为如果用户和开发人员可以直接与数据库进行交互,那对他们来说就不会那么容易了。

是否可以创建API用户将连接到的用户然后分配某些特权?例如,他们只能从特定的表和列中进行选择。并且基本上这样做是为了让他们不能做任何恶意或任何你不想要的事情。

我意识到除了获取数据之外还有很多其他方面存在一定的局限性,但是在API使用方面,选择可能是最重要的。

这是一个实用的想法吗?它安全吗?我真的不确定,我是这里专业人士最远的东西,这只是一个想法。

6 个答案:

答案 0 :(得分:2)

您可以设置一个RESTful API,它可以直接与PHPRestSQL之类的mySQL数据库对话。它可以为您完成所有肮脏的工作,但您可以完全自由地实施新功能或限制。

答案 1 :(得分:1)

您对API的确切含义是什么,您在谈论哪种API?

这听起来更像是一个设计决定。如果我理解正确,您希望与应用程序的用户层和数据库/持久层进行交互。总的来说这是个坏主意。首先,它确实减少了代码重用。这可能不是您在开发过程中的关注点,但学习最佳实践是个好​​主意。我通常遵循的层次是:

模型 - 视图 - 控制器 服务 坚持 型号/域

您可以在此处看到MVC(用户界面)与模型分开至少两层。这通常更安全,并促进代码重用。

答案 2 :(得分:1)

是的,您可以对任何客户端/服务器数据库系统执行此操作(如果它是数据库服务器,则必须有一种方法可以连接到它。)

由于许多问题,它没有做太多。

  • 维护很难
  • 安全性更差
  • 一般情况下没有任何好处。

基本上它会引起头痛,并没有提供任何好的东西。

答案 3 :(得分:1)

两个最重要的反问题是:

1)基础数据库是否已经确定,或者您可以选择一个?

2)您的用户真正需要执行哪种数据库操作?如果“选择”确实足够,那么可能通过“只读”Web服务公开数据是有意义的。但是如果你想更新,删除,进行存储过程调用等等,那么你将需要类似SQL的东西,而且很难为此构建一个Web服务API。

如果对问题1的回答是“我可以选择”,那么请看看CouchDB,它已经为它构建了一个RESTful API(http://wiki.apache.org/couchdb/HTTP_REST_AP)。

答案 4 :(得分:0)

是的,几乎所有数据库都允许您创建仅具有特定架构的选择权限的用户。我已经用它来为高级Excel用户提供ODBC访问权限而不用担心它们会弄乱任何东西。非常谨慎地使用 - 它总是造成维护困难,因为人们最终会以你不想要的方式(或者有计划替换)的方式使用你的模式的一部分。

答案 5 :(得分:0)

您可以将Access连接到任何数据库 - 例如Oracle。

但是,出于安全性和数据完整性的原因,这不一定是个好主意。