2017-04-20 103 views
-4

我的應用使用登錄/註冊系統,它使用BCrypt加密密碼。當用戶註冊密碼時使用BCrypt進行加密,然後存儲在mysql數據庫中。但是,當用戶登錄時,出於安全原因,我希望密碼也被加密。我可以在將密碼放入登錄網址之前對其進行加密,但是您可以比較2個哈希值,這樣就不會起作用。登錄URL中的BCrypt哈希密碼

我該如何加密登錄請求(url)中的密碼?

我沒有很好地解釋我的問題,所以我會試着更詳細地解釋它。在應用程序中,我有一個發送url請求的腳本,例如site/login.php?username = name & password = password 當我回頭看我的訪問者登錄我的cPanel時,我可以讀取&密碼字段,所以我知道我的用戶的密碼。這就是我想要阻止的事情,我想讓它不能看到任何地方的用戶密碼

+4

爲什麼你想在url中發送密碼? –

+1

*「但是,當用戶登錄時,出於安全原因,我想要對密碼進行加密」* - 嗯......已經散列了。散列和加密是兩種不同的動物。問題不清,恕我直言。 –

+1

他的意思是說:*他想要加密用戶在登錄表單中輸入的密碼,然後將這個密碼作爲URL參數發送,例如:'login.php?u = username&p = encrypted_pa​​ssword' *通過這些方式; @NorthSeaDevs爲什麼你現在要發送密碼在URL加密?您可以在同一頁上處理/驗證登錄憑證,然後只需**重定向到另一頁**:如果需要。 – Poiz

回答

-2

我認爲在登錄表單中使用「GET」方法會導致錯誤,而不是在 「POST」

從W3Schools的:

永遠不要使用GET發送的敏感數據! (將在URL中可見)

當你發送的登錄信息到PHP頁面,將檢查的憑據,如果你的表單使用the POST method,密碼不會出現在URL中。

編輯:考慮到什麼在評論中說,雖然它看起來更安全,並通過W3 (see Touheed Khan's answer)建議,POST 更安全比GET和,爲RiggsFolly said

HTTPS是唯一明智的安全機制

+0

這不是不使用POST的原因,有人可以像GET請求一樣輕鬆地嗅探POST請求。區別在於web服務器不會在訪問日誌中記錄POST請求的內容,但它們會記錄GET請求。 – JamesHalsall

+0

另外,使用GET/POST即使在SSL套接字中使用純文本密碼也同樣安全。 –

+0

@JamesHalsall謝謝,我不知道這兩種請求類型都可以輕鬆地被嗅探到! –

1

通過HTTPS連接和POST發送密碼,而不是URL。

使用HTTPS將加密除URL的地址部分之外的所有內容。

甚至在使用HTTPS時使用POST的原因是因爲許多服務器都記錄了URL並且通常會包含密碼。顯然在服務器日誌中輸入密碼是安全失敗。

不要在發送到服務器之前對密碼進行哈希處理,只是將哈希值設爲密碼。

在服務器上使用BCrypt哈希存儲密碼是安全的方法是password_hashpassword_verify,雙方共同爲PHP。