我似乎無法想出在PHP中使用密碼的正確方法。我散列和使用鹽,當涉及到存儲,但我想獲得基本的口令下PHP:特殊字符密碼
stripslashes(mysql_real_escape_string($_POST["password"]));
我假設一些用戶會使用帶「!@#$%^密碼。 ..「等 我可以想象用戶使用密碼,如<b>lulz</b>"u'mad?
。
如何在密碼變量中包含這些特殊字符?
我似乎無法想出在PHP中使用密碼的正確方法。我散列和使用鹽,當涉及到存儲,但我想獲得基本的口令下PHP:特殊字符密碼
stripslashes(mysql_real_escape_string($_POST["password"]));
我假設一些用戶會使用帶「!@#$%^密碼。 ..「等 我可以想象用戶使用密碼,如<b>lulz</b>"u'mad?
。
如何在密碼變量中包含這些特殊字符?
你不應該在這裏做任何類型的轉義或剝離。 *就像$hashed = my_favourite_hash($_POST["password"] . $salt)
應該沒問題。 †任何理智的哈希函數都應該返回一串字母數字字符,而這些字符都不需要轉義。
無論如何,你應該用準備好的發言您的SQL查詢,所以沒有機會SQL注入等
†在此替換您的首選散列函數my_favourite_hash
。
我猜這個子文本是爲了避開「{hash_algo}不安全!!」鍵入註釋。良好的調用:) – 2011-12-28 19:34:27
stripslashes()和mysql_real_escape_string()的要點是確保你沒有傳遞任何東西給你的查詢,而這些查詢可能會被誤認爲數據以外的東西。哈希應該將您發送的任何內容轉換爲嚴格的字符串數據。 – Chris 2011-12-28 19:34:53
@Madmartigan:是的,我未來的答案是... – 2011-12-28 19:35:09
我不會在任何不會被重新輸出爲HTML的數據上使用反斜槓。 – 2011-12-28 19:32:09
你不應該擔心這一點。你應該只用鹽和散列原始值。 – 2011-12-28 19:32:14
在對它進行散列之前,您不需要對輸入執行任何操作。 – 2011-12-28 19:32:39