数据传输的安全性

时间:2016-01-31 15:41:22

标签: php android security encryption

我正在创建一个服务器(PHP)来存储来自Android应用程序的数据。使用POST查询商店名称,密码和电子邮件。提到的这些数据存储在服务器(托管数据库)上。 但我有很多问题如何正确地做到这一点:

  1. 首先是后端,如何保护数据以及如何加密数据?
  2. 我知道你可以在网络(服务器)上传输android应用程序的令牌。它检查准确性,但Android应用程序很容易反编译。在这种情况下怎么样?
  3. 还听说过RSA,但是示例显示了该机制的工作原理。当在RSA中使用时,我将私钥存储在服务器上并在android应用程序中公开?但是,如果我从android上的服务器获取加密数据怎么办?我需要使用私钥解密它们。但是服务器上的密钥并将私钥存储在Android病毒上(第2段,反编译)。
  4. 其他...
  5. 请留言。还要描述我的问题的每一段,并且每个段落最好发布一个包含有用信息的链接。此外,我将非常感谢与此主题相关的任何有用的链接,特别是您的意见以及如何做到最好。

1 个答案:

答案 0 :(得分:3)

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

  1. 阅读PHP FAQ article on password saving有关安全数据保存服务器端的原因和方法。基本上,在直接保存敏感数据之前对其进行散列(以便不可逆地加密)。
  2. 关于你的第二个问题, 通常,在客户端和服务器之间直接传输敏感数据并不是一个大问题,因为可以采取以下安全措施:
    1. 使用HTTPS。这将加密数据传输流,并且不易受到被窃听的连接的影响。
    2. 您可能希望在发布请求中直接发送密码的哈希值而不是密码本身,或者换句话说,使用用户密码的哈希值作为密码。
  3. 客户端前端

    就内部存储而言,不可能阻止其他已安装的恶意应用程序读取和使用您存储的数据,除非您(我不熟悉)将它们存储在只能由您自己的应用程序访问的存储中

    服务器后端

    有些服务器会将OAuth tokens分发给客户端,例如GitHub。但是,如果您只希望自己的应用程序使用服务器登录API,则在这种情况下不需要OAuth,因为它主要用作灵活的权限承载,您不需要关心自己的应用程序。

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

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

    客户端 - 服务器通信

    所以这只会留下数据传输的问题,这是这个问题的主要观点。

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

    我不知道这个概念是否切实可行,但是在初次注册后,如果你足够痴迷,可能会用时间戳加密数据等等。我对此不太确定,但是{{ 3}}在此激发了我的灵感。

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