【问题标题】:ObjectOutputStream: Is this secure?ObjectOutputStream:这安全吗?
【发布时间】:2014-06-21 15:23:48
【问题描述】:

我正在开发一个 Android 应用程序,我想提交用户名和密码。我现在正在做的是:

  1. 为密码创建哈希值

  2. 通过 HTTP 请求连接到身份验证服务器

  3. 通过 ObjectOutputStream 发送用户名/哈希密码

我这样做是因为这是我可以利用我尚未获得的知识自己实施的唯一解决方案。

但我当然要担心一个问题:这有多安全?我知道,没有 100% 的安全性。但这是一个非常糟糕的解决方案,还是一般的解决方案?

【问题讨论】:

  • 你为什么要向服务器发送密码?
  • 检查是否正确。正确的密码存储在 mySQL 数据库中。我发送密码的服务器正在访问这个数据库。数据库本身只能由接收我密码的这台服务器访问。
  • 然后使用 md5,它是 100% 安全的。

标签: android security objectoutputstream


【解决方案1】:

这是不安全的,因为登录名/密码没有加密。你应该做的事情是:

  • 使用 https 而不是 http 连接进行登录
  • 在对密码进行哈希处理之前将盐添加到您的密码中(用户名可以作为盐)
  • 使用序列化作为数据协议不是很方便 - 它 不提供任何额外的安全性,但会非常糟糕 调试时...

盐: 如果两个用户具有相同的密码,他们也将具有相同的哈希值。这可以使用彩虹表轻松恢复(谷歌)。为了避免这种情况,密码应该用一些盐进行散列,所以不要使用:

hash(password);

你应该使用:

hash(salt+password);

salt 可以是在应用程序中硬编码的一些相当长的随机字符串(防止彩虹攻击)或只是用户名,因为它可以在服务器端和应用程序端轻松访问。

【讨论】:

  • “加盐”是什么意思?是的,我想序列化不是最好的方法,但这是我知道的唯一方法:/
猜你喜欢
  • 1970-01-01
  • 2014-12-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-20
  • 2011-06-19
  • 2010-10-11
相关资源
最近更新 更多