我正在做一些研究,以查找使用以下密碼強度檢查器的良好示例 JavaScript的 或 正則表達式 (正則表達式)。 在我工作的應用程序中,我們進行了回發操作以驗證密碼強度,這對我們的用戶而言非常不便。
什麼是正則表達式?
正則表達式是定義搜索模式的一系列字符。 通常,字符串搜索算法會將此類模式用於 找 or 查找和替換 對字符串的操作,或用於輸入驗證。
本文絕對不是要教您正則表達式。 只需知道使用正則表達式的功能將絕對簡化您在搜索文本模式時的開發。 還需要注意的是,大多數開發語言都優化了正則表達式的使用方式…因此,Regex通常比服務器和客戶端都快得多,而不是逐步解析和搜索字符串。
我在網上搜尋了很多之後才發現 一個例子 一些很好的正則表達式,它們查找長度,字符和符號的組合。 但是,對於我來說,該代碼有點過分了,並且是針對.NET量身定制的。 因此,我簡化了代碼並將其放入JavaScript。 這使得它可以在回發之前在客戶端的瀏覽器上實時驗證密碼強度……並向用戶提供有關密碼強度的一些反饋。
輸入一個密碼
每次敲擊鍵盤時,都會針對正則表達式對密碼進行測試,然後在其下方的跨度中向用戶提供反饋。
輸入密碼
這是代碼
正則表達式 在減少代碼長度方面做得非常出色:
- 更多字符 –長度小於8個字符。
- 弱 –如果長度小於10個字符,並且不包含符號,大寫字母和文本的組合。
- 中 –如果長度為10個字符或更多,並且包含符號,大寫字母和文本的組合。
- 強大 - 如果長度為14個字符或更多,並且包含符號,大寫字母和文本的組合。
<script language="javascript">
function passwordChanged() {
var strength = document.getElementById('strength');
var strongRegex = new RegExp("^(?=.{14,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
var mediumRegex = new RegExp("^(?=.{10,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{8,}).*", "g");
var pwd = document.getElementById("password");
if (pwd.value.length == 0) {
strength.innerHTML = 'Type Password';
} else if (false == enoughRegex.test(pwd.value)) {
strength.innerHTML = 'More Characters';
} else if (strongRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:green">Strong!</span>';
} else if (mediumRegex.test(pwd.value)) {
strength.innerHTML = '<span style="color:orange">Medium!</span>';
} else {
strength.innerHTML = '<span style="color:red">Weak!</span>';
}
}
</script>
<input name="password" id="password" type="text" size="15" maxlength="100" onkeyup="return passwordChanged();" />
<span id="strength">Type Password</span>
強化密碼請求
重要的是,您不僅要驗證Javascript中的密碼構造。 這將使擁有瀏覽器開發工具的任何人都可以繞過腳本並使用所需的任何密碼。 在將密碼存儲在平台中之前,您應該始終利用服務器端檢查來驗證密碼強度。
我發現了另一個密碼強度檢查器。 他們的算法基於單詞詞典。 在microsoft.com上嘗試一下– http://www.microsoft.com/protect/yourself/password/checker.mspx 還有一個在itsimpl.com – http://www.itsimpl.com
謝謝! 謝謝! 謝謝! 我一直在鬼混兩個星期,從其他網站獲得該死的密碼強度代碼,然後拔頭髮。 您的簡短,可以像我想要的那樣工作,最重要的是,JavaScript新手可以輕鬆修改! 我想捕獲強度判定,除非滿足強度測試,否則不要讓表單發布實際更新用戶的密碼。 其他人的代碼太複雜,或者工作不正常或其他原因。 我愛你! XXXXX
別客氣! 別客氣! 別客氣!
我也愛你!
感謝上帝,他們實際上可以正確地編寫一段代碼。
有和賈尼斯一樣的經歷。
開箱即用,非常適合像我這樣無法編寫javascript代碼的人!
感謝您編寫一段完全符合罐上代碼要求的代碼!
嗨,首先,非常感謝您的努力,我試圖在Asp.net上使用它,但是沒有用,我正在使用
而不是標籤,並且沒有任何建議?!
對於Nisreen:高亮框中的代碼不適用於cut'n'paste。 單引號搞砸了。 演示鏈接的代碼雖然很好。
嘿,我喜歡你的劇本! 我將其翻譯成荷蘭語,並將其發佈在這裡的論壇上!
做得好! 究竟應該如何在客戶端上完成
非常好...
感謝道格拉斯,我將其用於當前的工作。
“ P @ s $ w0rD”表現強勁,儘管它會因字典攻擊而很快被破解……
為了在職業解決方案上部署這樣的功能,我相信將這種算法與字典檢查結合起來很重要。
稍作改動,即可在XULRunner中很好地工作。 謝謝!
感謝這個小代碼,當訪客輸入密碼時,我現在可以用它來測試密碼強度,
很棒的編碼
腳本超級好。我在當前項目中使用過
謝謝你的分享!
如此簡單而奇妙的表達。 我作為測試人員從此表達式得出了我的TC。
感謝你的分享。 您在此頁面上有幾個斷開的鏈接。 僅供參考。
有人可以告訴我,為什麼它不能正常工作。
我複制了所有代碼,並將其粘貼到notepad ++,但根本不起作用?
請幫助我..
太棒了!!!!! 謝謝。
幹得好! 簡單有效。 非常感謝你的分享!
感謝
好,謝謝但是……什麼是強壯pw的例子? '找不到一個!-{}
這種“強度檢查器”使人們走上了非常危險的道路。 它在整個密碼短語長度上重視字符多樣性,從而使它對較短,更多樣化的密碼的評價要強於較長,不那麼多樣化的密碼。 如果用戶遇到嚴重的黑客威脅,這將使您的用戶陷入困境。
我不同意,喬丹! 該示例只是作為腳本示例發布的。 我對人們的建議是利用密碼管理工具為它唯一的任何網站創建獨立的密碼短語。 謝謝!
謝謝,它很棒。
謝謝你的工作正常
非常感謝您被搜索了很多次,但最後我知道了您的帖子,並感到非常困惑。 謝謝
謝了哥們。 剛剛部署在我的網站上,並且運行良好。
喜歡聽到! 不客氣!