【问题标题】:Safer way to connect to Remote Database in applications在应用程序中连接到远程数据库的更安全方式
【发布时间】:2017-12-01 12:42:56
【问题描述】:

假设我正在制作一个 Xamarin.android(让我们将其视为任何平台/框架)。所以,我必须使用远程数据库来存储和检索信息。

我一直在我的服务器上制作与数据库交互的基于 PHP 的 API。我让我的应用程序使用数据访问那些 API 端点,然后这些 API 更新数据库中的信息。

所以,我想知道如果我让我的应用程序直接连接到远程 MySQL,它会比调用 API 快一点。

哪种方式更安全?出于明显的原因,我不希望任何人能够拦截到 DB 的数据或连接详细信息。什么是最安全的方法?或者有没有其他方法可以完成这项工作?

【问题讨论】:

  • 简短回答:假设 API 没有 SQL 注入,API 会更安全

标签: c# php android mysql xamarin


【解决方案1】:

暂时忘记更安全;后端层(在您的情况下为 API 服务器)将使您的系统更加解耦,这是最少要做的事情。假设您突然决定使用另一种类型的数据库,比如说 PostgreSQL 而不是 MYSQL,您可能需要使用不同格式的连接字符串,您是否愿意每次都使用新的数据库连接字符串更新所有客户端的 Android 应用程序?这将花费时间和成本,并使您的应用程序难以维护,并在用户端破坏它。

是的,使用 API 更安全(在您的情况下);对客户端应用程序(如 android 应用程序)进行逆向工程比破解安全且设计良好的服务器要容易得多。正如您在问题中所说,了解太多会使您的数据库容易受到多种类型的攻击。因此,使用 API 封装数据库要安全得多。

但是,仅使用 API 来使您的系统更安全是不够的;您还应该遵循最佳实践。例如;使用 HTTPS,使用身份验证技术(密码,Oauth2),使用授权等...

不过,我并不是说,没有 API 就不可能直接使用您的数据库,您可以使用不同的技术保护您的数据库,这是可能的,但完全不推荐

【讨论】:

  • 是 OAuth 2.0 令牌通过 API 从客户端传播到数据库的方式。
  • 是的,我也是这么想的。总体上正在寻找更快的性能。但是,数据安全更为重要。感谢您的意见和建议:)
猜你喜欢
  • 2010-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-02
  • 1970-01-01
相关资源
最近更新 更多