【发布时间】:2015-11-05 01:38:51
【问题描述】:
我正在使用 ArangoDB 创建单页 Web 应用程序进行存储。 Arango 提供了非常棒的方式来访问和操作数据。其中之一是经典的 JS API。在客户端 JS 中编写直接的 DB 查询很容易,这将是 DB 的直接查询。所以中间没有服务器应用程序。
当然,这确实是不安全的模式。所以我应该编写某种 REST-full API 服务,通过 URL 从服务器查询数据,然后服务器查询数据库。但这真的很不方便,因为我需要编写两到三倍的代码(第一次查询我的服务器,第二次查询数据库,也许还有两个查询之间的翻译)。另外,我认为我的服务器的 API 调用看起来与 DB 的 API 调用几乎相同。
我不想完全抽象,因为应用程序应该很复杂,并且会有很多类型的 API 请求,这只会带来 bug 并消耗更多时间。
那么,首先从安全性,其次是易于编码的角度来看,从 DB 请求客户端应用程序数据的最佳方式是什么?
【问题讨论】:
-
您的目标似乎有冲突。编写不安全的代码非常容易。编写安全代码很困难。但你想要两者。我认为您应该更喜欢安全性。否则,您会希望在通过 SQL 注入删除数据库之后拥有。
-
如果您的目标是 ArangoDB(在查看此问题的标签时似乎如此),则有 Foxx。它是一个服务器端 JavaScript 框架,用于构建基于 REST 的应用程序,在 ArangoDB 中运行。您的应用程序需要的数据库操作和查询可以通过 URL 访问,因此您的单页应用程序可以直接调用它们。您仍然可以控制可以运行的查询,因为您可以控制 Foxx 路由中的代码。无需使用 Foxx 编写客户端查询,只需使用常规 AJAX 方法调用服务器 URL。
标签: javascript security graph-databases arangodb