構建簡單的密碼強度檢查器
提供即時反饋是目前的內在。為什麼要限制自己檢查用戶名和電子郵件地址?為什麼不擴展它以提供有關用戶輸入密碼強度的快速視覺反饋?今天,我們將研究如何使用正則表達式和簡單算法來創建簡單的密碼檢查器。
>,因為大多數安全專家都會告訴您,用戶始終是最弱的鏈接。當用戶選擇一個非常不明智的密碼時,即使是最安全的系統也很脆弱。考慮到這一點,最近的趨勢似乎正在向用戶提供有關密碼強度的快速反饋,以便用戶可以擴展或修改密碼以使其更安全。感興趣的?讓我們立即開始吧!這是我們今天要建立的內容的演示:
設計目標
我們針對此特定功能的設計目標相對較小。
- 在其密碼強度上提供了視覺反饋。這意味著無需單擊按鈕來測試強度。
- > 觸發事件可以是任何鍵盤事件。我選擇了輸入框的鑰匙
- 。
- 讓事件處理程序檢查輸入,但將其他所有內容委派給了單個輔助方法。 >
- >輔助方法應照顧分析輸入並分析它,並確保將結果計算出來的範圍。大於預期的最低限度,以免在無效的條目上浪費CPU週期。
>
>
,為了保持這種文字的本能和幾乎能力,我決定與非常基本的Algorith一起使用,這是為了保持這種文字的興趣。該算法分析字符串,為額外的長度以及使用數字,符號和大寫字母提供獎金,以及對僅字母或數字輸入的罰款。我們不會考慮針對字典檢查輸入,因為這超出了文章的範圍。 >首先,我們檢查輸入字符串的長度。如果它大於最小長度,請給予其基本分數為50。否則將其0。接下來,遍歷字符串的每個字符,並檢查它是符號,數字還是大寫字母。如果是這樣,請記下它。 然後,請檢查字符串在推薦的最低限度上具有多少個額外字符,並為每個字符授予獎金。如果字符串包含大寫字母,數字和符號或所有三個符號的組合,也會授予獎金。為每個人的存在提供獎勵。 檢查字符串是否僅包含小寫字母或數字,如果是的,則懲罰。它不會非常複雜,但是會捕獲很多不良密碼。一旦我們在代碼中看到它,您就會更好地理解這一點。 核心標記演示頁面的HTML標記看起來像是如此:
>忽略所有常規標記。請注意,帶有
>div> div> element的ID的輸入元素,具有Div
>元素的ID,div<div id="container"><br><br> <h1>A simple password strength checker</h1><br><br> <p>Type in your password to get visual feedback regarding the strength of your password.</p><br> <p>I assure you, I am not stealing your passwords. The form doesn't not submit. You can look through the source if you are suspicious. :)</p><br><br> <div class="block"><br> <input id="password" /><br> <div id="complexity" class="default">Enter a random value</div><br> </div><br><br> <div class="block"><br> <div id="results" class="default">Breakdown of points</div><br> <div id="details"></div><br> <p class="message"></p><br> </div><br><br></div><br>
>的輸入元素將包含有關懲罰的消息,因此我們已經大膽而紅色。所需的功能。請注意,我們廣泛使用jQuery。如有必要,請隨時鏈接到Google的CDN。 變量和事件處理> ,由於很多數字雜耍將繼續進行,因此我們需要大量變量來保留這些值。由於這是一個演示,而不是生產代碼,因此我決定將這些變量聲明為全局,並通過助手方法訪問它們,而不是內部聲明它們,然後將它們傳遞到函數。第一個,稱為輸入元素和num
>,具有額外字符,大寫字符,數字和符號的數量。我們為第二個對像做同樣的操作,稱為num.default {<br> background-color: black;<br>}<br>.weak {<br> background-color: #C62828;<br>}<br>.strong {<br> background-color: #FF8F00;<br>}<br>.stronger {<br> background-color: #1976D2;<br>}<br>.strongest {<br> background-color: #388E3C;<br>}<br><br>span.value {<br> font-weight: bold;<br> float: right;<br>}<br><br>p.message {<br> color: red;<br> font-weight: bold;<br>}<br>
元素時,checkval
函數都會被調用。>
let baseScore = 0;<br>let score = 0;<br>const minPasswordLength = 8;<br><br>const complexity = document.querySelector("#complexity");<br>const passwordInput = document.querySelector("#password");<br><br>let num = {<br> excess: 0,<br> upper: 0,<br> numbers: 0,<br> symbols: 0<br>};<br><br>let bonus = {<br> excess: 3,<br> upper: 4,<br> numbers: 5,<br> symbols: 5,<br> combo: 0,<br> onlyLower: 0,<br> onlyNumber: 0,<br> uniqueChars: 0,<br> repetition: 0<br>};<br>
>函數中進行一些可變初始化,該函數會注意計算計算的理解。我們將查看稍後的工作方式。 分析輸入現在,我們將定義匹配()方法,使我們可以使字符串與正則表達式匹配。如果您是正則表達式的新手,我建議您閱讀Vasili關於必須知道的正則表達式的精彩文章。
>接下來,我們必須確定輸入字符串的長度與密碼的指定最小長度之間的差異。這為我們提供了多餘的字符。然後,我們檢查字符串是否具有大寫,數字和符號。如果是這樣,請給予獎金。我們還檢查一下它是否具有其中兩個的組合,並授予較小的獎金。我們使用正則表達式進行檢查,如果是這樣,則對此練習的密碼進行懲罰。
計算複雜性>計算複雜性相對容易,因為我們只需要對我們較早地分配給我們的變量的值進行簡單的添加和乘法。我們將基本分數添加到多餘字符數量及其乘數的乘積中。我們為大寫字母,數字和符號做同樣的事情。然後,我們為組合(如果存在)添加一個獎勵,並在字符串平坦(如果字符串平均)中添加罰款。
<div id="container"><br><br> <h1>A simple password strength checker</h1><br><br> <p>Type in your password to get visual feedback regarding the strength of your password.</p><br> <p>I assure you, I am not stealing your passwords. The form doesn't not submit. You can look through the source if you are suspicious. :)</p><br><br> <div class="block"><br> <input id="password" /><br> <div id="complexity" class="default">Enter a random value</div><br> </div><br><br> <div class="block"><br> <div id="results" class="default">Breakdown of points</div><br> <div id="details"></div><br> <p class="message"></p><br> </div><br><br></div><br>

,要刪除的類和要添加的類。輔助功能稱為默認的類,將其背景顏色更改為原始黑色。 >
如果其小於最小長度,我們會相應地更改文本,並隨著分數的增加而添加弱。隨意更改每個評分的基線得分。我只是提出了不科學的值以使演示進行。
>更新詳細的分解 >
隨著主結果的更新,我們可以考慮現在更新統計信息。
.default {<br> background-color: black;<br>}<br>.weak {<br> background-color: #C62828;<br>}<br>.strong {<br> background-color: #FF8F00;<br>}<br>.stronger {<br> background-color: #1976D2;<br>}<br>.strongest {<br> background-color: #388E3C;<br>}<br><br>span.value {<br> font-weight: bold;<br> float: right;<br>}<br><br>p.message {<br> color: red;<br> font-weight: bold;<br>}<br>
這就像將常規HTML注入元素一樣,除了我們將其中的幾個變量放置在內部,以啟用詳細信息即時更新。每個值都會獲取init()>函數不僅對初始值分配有用。實際上,它需要在每個分析()
函數之後重置分數和懲罰值,並且您會很好。 ><div id="container"><br><br> <h1>A simple password strength checker</h1><br><br> <p>Type in your password to get visual feedback regarding the strength of your password.</p><br> <p>I assure you, I am not stealing your passwords. The form doesn't not submit. You can look through the source if you are suspicious. :)</p><br><br> <div class="block"><br> <input id="password" /><br> <div id="complexity" class="default">Enter a random value</div><br> </div><br><br> <div class="block"><br> <div id="results" class="default">Breakdown of points</div><br> <div id="details"></div><br> <p class="message"></p><br> </div><br><br></div><br>
讓我們看看這裡發生了什麼。我們首先將整個密碼轉換為小寫字母。之後,我們將其轉換為大小屬性,以獲取唯一字符的數量。如果唯一字符的數量小於或等於3,我們為AnalyzeString()函數設置值以檢查重複模式。這將依賴於等級,並檢查是否在密碼中重複3個或更多字母數字。字符。
在上圖中,您可以看到我們已經成功解決了重複字符序列的問題。但是,我給出了一個示例,說明了密碼強度檢查器的另一個限制。 >您可以看到,
pa $$ w0rd $.default {<br> background-color: black;<br>}<br>.weak {<br> background-color: #C62828;<br>}<br>.strong {<br> background-color: #FF8F00;<br>}<br>.stronger {<br> background-color: #1976D2;<br>}<br>.strongest {<br> background-color: #388E3C;<br>}<br><br>span.value {<br> font-weight: bold;<br> float: right;<br>}<br><br>p.message {<br> color: red;<br> font-weight: bold;<br>}<br>
test()
>

>該帖子已通過Monty Shokeen的貢獻進行了更新。蒙蒂(Monty)是一位全棧開發人員,他也喜歡編寫教程並了解新的JavaScript庫。
以上是構建簡單的密碼強度檢查器的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JavaScript是現代Web開發的基石,它的主要功能包括事件驅動編程、動態內容生成和異步編程。 1)事件驅動編程允許網頁根據用戶操作動態變化。 2)動態內容生成使得頁面內容可以根據條件調整。 3)異步編程確保用戶界面不被阻塞。 JavaScript廣泛應用於網頁交互、單頁面應用和服務器端開發,極大地提升了用戶體驗和跨平台開發的靈活性。

JavaScript的最新趨勢包括TypeScript的崛起、現代框架和庫的流行以及WebAssembly的應用。未來前景涵蓋更強大的類型系統、服務器端JavaScript的發展、人工智能和機器學習的擴展以及物聯網和邊緣計算的潛力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript是現代Web開發的核心語言,因其多樣性和靈活性而廣泛應用。 1)前端開發:通過DOM操作和現代框架(如React、Vue.js、Angular)構建動態網頁和單頁面應用。 2)服務器端開發:Node.js利用非阻塞I/O模型處理高並發和實時應用。 3)移動和桌面應用開發:通過ReactNative和Electron實現跨平台開發,提高開發效率。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

本文展示了與許可證確保的後端的前端集成,並使用Next.js構建功能性Edtech SaaS應用程序。 前端獲取用戶權限以控制UI的可見性並確保API要求遵守角色庫

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務
