2014-05-05 144 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