我一直在考虑这个问题,这让我大吃一惊,假设我们有一个网站,一个移动应用程序和一个数据库。
通常在我们开发网站时,我们假装将我们的数据库凭据存储在配置文件中,并将网站直接连接到数据库,而不使用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这是不可能的。
答案 0 :(得分:1)
您应该始终要求用户登录 - 永远不要将凭据或私钥存储在您要分发的应用中。至少,除非他们专门针对在验证后选择存储它们的用户,否则不要存储它们。
基本思想是用户必须以某种方式进行身份验证,而你如何做到这一点真的太宽泛了,无法用SO答案来涵盖。基本结构应该是:
有很多服务围绕提供这类服务,特别是对于移动应用程序。
您可以将用户自己的凭据存储在设备上,如果是,则应加密(但是您是对的,恶意应用可能会捡起它们)。
底线:永远不要直接向数据库分发硬编码访问。