2014-05-05 90 views
1

我正在开发一个Android应用程序,我想提交一个用户名和密码。我在做什么,此刻是:ObjectOutputStream:这是安全的吗?

  1. 通过ObjectOutputStream的

密码通过HTTP请求创建散列值

  • 连接到认证服务器

  • 发送用户名/散列密码

    我这样做是因为这是我可以用我已经获得的知识来实现​​自己的唯一解决方案。

    但是当然有一个问题我不得不担心:这有多安全?我知道,没有100%的安全。但是,这是一个非常糟糕的解决方案,或平均?

  • +0

    你为什么要发送密码到服务器? – Kedarnath

    +0

    检查它是否正确。正确的密码存储在mySQL数据库中。和我发送密码的服务器正在访问此数据库。数据库本身只能由接收我的密码的这台服务器访问。 – PKlumpp

    +1

    然后使用md5,它是100%安全的。 – Kedarnath

    回答

    1

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

    • 使用HTTPS,而不是用于登录
    • 哈希它之前,你的密码,加入盐HTTP连接(用户名作为盐就可以了)
    • 使用的序列化数据协议不非常方便 - 它 不提供任何额外的安全性,但在调试的时候,才是真正可怕的 ...

    盐: 如果两个用户有此相同的密码,他们也都会有这个相同的哈希。这可以很容易地使用彩虹表(谷歌为它)恢复。为了避免这样的密码的情况应该与一些盐是哈希值,而不是使用:

    hash(password); 
    

    你应该使用:

    hash(salt+password); 
    

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

    +0

    “加盐”是什么意思? 是的我想序列化不是最好的方法,但它是我知道的唯一方法:/ – PKlumpp

    +1

    编辑我的答案 – piotrpo