连接数据库的最安全方式

时间:2016-03-23 21:08:31

标签: database security http

我一直在考虑这个问题,这让我大吃一惊,假设我们有一个网站,一个移动应用程序和一个数据库。

通常在我们开发网站时,我们假装将我们的数据库凭据存储在配置文件中,并将网站直接连接到数据库,而不使用multi-tier architecture,但是当涉及到移动应用程序 Android iOS 此应用程序可以engineer reversed,这意味着存在泄露数据库凭据的风险。

所以我开始考虑这个multi-tier architecture,并考虑Facebook和其他社交网络如何完成工作,他们通常制作API并使用大量 HTTP请求。 / p>

通常社交网络API有 app_id secret_key ,此密钥将用于提高应用程序的安全性,但我正在考虑我怎么能将这些密钥存储在我的应用程序中,因为我会回到讨论的开始,如果我要使用Java,我可以使用Java Preference类,但这不安全我在this question中看到,另外我需要确保我的HTTP请求安全CSRF

那么,我怎么能将这些密钥存储在我的应用程序中?什么是最好的方法,因为hard-codding这是不可能的。

1 个答案:

答案 0 :(得分:1)

您应该始终要求用户登录 - 永远不要将凭据或私钥存储在您要分发的应用中。至少,除非他们专门针对在验证后选择存储它们的用户,否则不要存储它们。

基本思想是用户必须以某种方式进行身份验证,而你如何做到这一点真的太宽泛了,无法用SO答案来涵盖。基本结构应该是:

  1. 用户要求对您的服务进行身份验证并向其提出质询
  2. 用户响应该挑战(通过提供来自可信身份提供者的密码或身份验证令牌)。
  3. 服务具有访问数据库的凭据,并且仅允许经过身份验证的用户执行此操作。
  4. 有很多服务围绕提供这类服务,特别是对于移动应用程序。

    您可以将用户自己的凭据存储在设备上,如果是,则应加密(但是您是对的,恶意应用可能会捡起它们)。

    底线:永远不要直接向数据库分发硬编码访问。