数据传输的安全性


Security in data transmission

我正在创建一个服务器(PHP(来存储来自安卓应用程序的数据。使用POST查询存储名称,密码和电子邮件。上述这些数据存储在服务器上(托管数据库(。但是我有很多问题如何正确执行此操作:

  1. 首先是后端,如何保护数据以及如何加密?
  2. 我知道您可以在网络(服务器(上转移安卓应用程序的令牌。在那里它检查了准确性,但 android 应用程序很容易反编译。在这种情况下怎么办?
  3. 也听说过RSA,但示例显示了该机制的工作原理。在 RSA 中使用时,我将私钥存储在服务器上,并在 android 应用程序中存储公共密钥?但是,如果我从 android 上的服务器获取加密数据怎么办?我需要使用私钥解密它们。但是将密钥存储在服务器上并将私钥存储在Android上(第2段,反编译(。
  4. 其他。。。

请留下评论。还要描述我问题的每一段,并且希望每个段落都发布一个包含有用信息的链接。另外,我将不胜感激与此主题相关的任何有用的链接,尤其是您的意见以及如何最好地做到这一点。

我假设您正在尝试创建一个基本的注册/登录以使用此应用程序机制。

  1. 阅读有关密码保存的 PHP 常见问题解答文章,了解为什么以及如何在服务器端安全保存数据。基本上,在直接保存敏感数据之前对其进行哈希处理(以不可逆地加密(。
  2. 关于你的第二个问题,通常,在客户端和服务器之间直接传输敏感数据并不是一个大问题,因为可以采取以下安全措施:
    1. 使用 HTTPS。这将加密数据传输流,并且不太容易受到连接被窃听的影响。
    2. 您可能希望在 post 请求中直接发送密码的哈希而不是密码本身,或者换句话说,使用用户密码的哈希作为密码。

客户端前端

在内部存储方面,无法阻止其他已安装的恶意应用程序读取和使用您存储的数据,除非您(我不熟悉这一点(将它们存储在只能由您自己的应用程序访问的存储中。

服务器后端

有一些服务器将 OAuth 令牌分发到客户端,例如 GitHub。但是,如果您只希望服务器登录 API 由您自己的应用程序使用,则在这种情况下不需要 OAuth,因为它主要用作灵活的权限持有者,您无需担心自己的应用程序。

相反,更重要的是如何处理服务器端的事情。对于我曾经为自己服务器编码的 Web API,虽然我不希望其他人使用它,但我将 API 设计得好像是供公众使用的,并注意意外的客户端输入。这是因为客户端随时可能是假的,所以永远不要相信客户输入的完整性。(原谅我的痴迷,但我什至认为我的 JavaScript 在网页上的后端作为"客户端"是安全的(

我从未使用过其他PHP框架,也没有任何全面的知识,但是当我在我的网站上工作时,我会在自己的后端代码中创建一个安全层。我将后端分为两个级别,即数据库级别和接口级别。数据库级别应尽量不让接口级别获取客户端(当前身份验证状态(不应该知道的数据,以最大程度地减少安全漏洞的可能性。

客户端-服务器通信

所以这只剩下数据传输的问题,这是这个问题的重点。

如上所述,HTTPS足以加密数据传输。

我不知道这个概念是否可行,但是在初始注册后,如果您足够痴迷,可能会使用时间戳等加密数据。我对此不太确定,但断开连接的令牌启发了我。

但是,您需要多少保护仍然取决于您发送的数据类型。例如,如果您只是跟踪用户使用情况,则实际上并不需要对其进行大量保护。只需确保用户的原始密码不会通过散列来泄露即可。