单页 Web 应用程序中的安全数据库查询

Secure db queries in single page web app

我正在使用 ArangoDB 创建单页 Web 应用程序进行存储。 Arango 提供了访问和操作数据的绝佳方式。其中之一就是经典的 JS API。在客户端 JS 中编写直接的数据库查询将很容易,这将是对数据库的直接查询。所以中间没有服务器应用程序。

当然,这确实是一种不安全的模式。所以我应该编写某种 REST-full API 服务,通过 URL 从服务器查询数据,然后服务器查询数据库。但这真的很不方便,因为我需要编写两倍或三倍的代码(第一次查询我的服务器,第二次查询数据库,可能还有两个查询之间的一些翻译器)。此外,我认为 API 调用我的服务器看起来几乎与 API 调用数据库相同。

我不想完全抽象,因为应用程序应该很复杂,并且会有很多类型的 API 请求,这只会带来错误并浪费更多时间。

那么从数据库请求客户端应用程序中的数据的最佳方式是什么,首先是安全性,其次是易于编码?

我真的建议编写 REST API 调用(或通常 URL 调用)来访问您的数据。 运行 客户端的任何内容或来自客户端的任何流量都可以访问和操作。随附身份验证和 SQL 调用自己。 你想保护什么?数据库客户端身份验证?如果你加密它,你需要在客户端解密它。 SQL 调用 - 如果您构建并传输它们,客户端可以操纵它们以使用任何值获取/更新任何数据。真的不容易啊。。 所以 - 为了安全起见 - 坚持这里的模式..

我在 Facebook 上找到了 GraphQL with Relay 解决这个问题的最佳方法。