所以可以說我有一個字符串形式的密碼替換所有字符:PHP有星號的
$password = "thisisaplaintextpassword"
我怎樣才能把它變成下面?
$password = "************************"
我想通過電子郵件向用戶發送他們的帳戶詳細信息,而不想發送整個事情。
所以可以說我有一個字符串形式的密碼替換所有字符:PHP有星號的
$password = "thisisaplaintextpassword"
我怎樣才能把它變成下面?
$password = "************************"
我想通過電子郵件向用戶發送他們的帳戶詳細信息,而不想發送整個事情。
$password = "thisisaplaintextpassword"
echo str_repeat("*",strlen($password));
採樣輸入
testingpass
樣本輸出
***********
採樣輸入
hello
樣本輸出
*****
function hidePassword($p) {
$fit = strlen($p);
return sprintf("%'*-${fit}s",false);
}
echo hidePassword($p);
你真不該顯示長度給用戶,因爲這是應該是安全的信息泄漏。
在您的問題下面的評論中使用的蘇格拉底方法在問「爲什麼要這麼做?」更多的建議是「不要那樣做」,但是蘇格拉底方法應該鼓勵你思考爲什麼要問這個問題。你應該畫的結論是「你不應該問這個具體問題,因爲這個問題的基礎是有缺陷的」。只需使用一個靜態字符串。這是更好的建議,而不是告訴你如何做一些在特定情況下做錯事情的事情。其次:要向用戶顯示反映其密碼長度的星號序列,這表明您正在以明文形式存儲其密碼,或者僅對其進行加密,以便您可以將其密碼恢復爲其原始形式確定長度。這顯示了你的安全問題。除非有一個非常好的理由,否則只能存儲密碼散列。哈希是統一的長度,所以這使得你的問題變得多餘。
所以你 - 很簡單 - 不應該這樣做。 是你要問的問題底線的答案。
但是爲了完整起見,我會重複你已經在其他反應了答案:
function stringToAsterisks($string){
return str_repeat("*", strlen($string));
}
我看到了,謝謝你的洞察力。這是我第一次建立一個賬戶系統。 – ThatGuy343 2014-09-22 07:51:33
沒有probs:我們都從某個地方開始,其中一些東西第一次不是很明顯。我能否建議你不要自己發明整個事情,而是要閱讀如何最好地處理這類事情,尤其是在保護人員數據方面。 – 2014-09-22 08:00:50
',不希望將整個thing.' ..那爲什麼你要發送密碼,如果不需要? – Jenz 2014-09-22 07:36:12
@u_mulder密碼長度各異 – ThatGuy343 2014-09-22 07:36:39
如果沒人能看到它 - 1.爲什麼要發送它? 2.誰在乎它的長度? – 2014-09-22 07:37:19