【问题标题】:Security in data transmission数据传输安全
【发布时间】:2016-01-31 15:41:22
【问题描述】:

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

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

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

【问题讨论】:

  • 它们是什么数据?为什么不希望人们看到自己的数据?
  • @Pemapmodder 它可以是例如密码或其他私人数据...

标签: php android security encryption


【解决方案1】:

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

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

客户端前端

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

服务器后端

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

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

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

客户端-服务器通信

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

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

我不知道这个概念是否实用,但是在初始注册之后,如果你足够痴迷,可能会使用时间戳等加密数据。我不太确定,但是@987654324 @ 启发了我。

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

【讨论】:

  • 你的答案是最好的!!!非常帮助我!我必须加密数据,例如用户列表(id、标题、详细信息、已解决等)?还是 HTTPS 就足够了?在不久的将来,我计划只制作数据库级别。但我想写应该写的,而不是我能写的。然后不回收基础,不完全丢失。我的立场正确吗?
猜你喜欢
  • 2011-11-06
  • 1970-01-01
  • 2013-06-04
  • 2016-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
相关资源
最近更新 更多