Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android ObjectOutputStream:这是安全的吗?_Android_Security_Objectoutputstream - Fatal编程技术网

Android ObjectOutputStream:这是安全的吗?

Android ObjectOutputStream:这是安全的吗?,android,security,objectoutputstream,Android,Security,Objectoutputstream,我正在开发一个Android应用程序,我想提交一个用户名和密码。我目前正在做的是: 为密码创建哈希值 通过HTTP请求连接到身份验证服务器 通过ObjectOutputStream发送用户名/哈希密码 我之所以这样做,是因为这是我用我所获得的知识实现自己的唯一解决方案 但我当然要担心一个问题:这有多安全?我知道,没有100%的安全。但这真的是一个糟糕的解决方案,还是一个普通的解决方案?这是不安全的,因为登录/密码没有加密。你应该做的事情是: 使用https而不是http连接进行登录 在对密码进

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

  • 为密码创建哈希值

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

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

  • 我之所以这样做,是因为这是我用我所获得的知识实现自己的唯一解决方案


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

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

    • 使用https而不是http连接进行登录
    • 在对密码进行哈希运算之前将其添加到salt(用户名为salt是可以的)
    • 使用序列化作为数据协议不是很方便-它 不会提供任何额外的安全性,但会非常糟糕 调试时
    盐: 如果两个用户拥有相同的密码,他们也将拥有相同的哈希。这可以通过使用rainbow表(Google for it)轻松恢复。为了避免类似的情况,密码应该用一些盐散列,所以不要使用:

    hash(password);
    
    你应使用:

    hash(salt+password);
    

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

    为什么要向服务器发送密码?以检查密码是否正确。正确的密码存储在mySQL数据库中。我发送密码的服务器正在访问这个数据库。数据库本身只能由接收我密码的服务器访问。然后使用md5,它是100%安全的。你说的“添加盐”是什么意思?是的,我想序列化不是最好的方式,但这是我知道的唯一方式:/