php密码复杂,不要再强迫我设置复杂密码
我最近讀的一篇博文(伯樂在線注:請看本文最后),是關于強制使用更復雜的密碼。原作者說這是為了更安全,但我認為這些技術不是最好的方式,比起「實用」來說,顯得很麻煩。
問題
你想實施更安全的密碼,我懂。但是,
請停止強迫我使用你那糟糕的密碼規則 :(
不讓這篇文章那么嚴肅,我在試圖做到這一點。我只是因為那篇文章有了靈感寫下我的想法,不是針對作者。總之我是在和每一個在自己的網站和服務器使用這些密碼規則的人講話。我討厭這些類型的規則: 'password' => [ 'required', 'confirmed', 'min:8', 'regex:/^(?=S*[a-z])(?=S*[A-Z])(?=S*[d])S*$/',];
密碼必須包含 1 個大寫字母,1 個小寫字母和數字。
有了這樣的一個規則,密碼 Abcd1234 會通過你的有效性檢測,但是 mu-icac-of-jaz-doad 不會。
我知道你大概是想讓人們使用隨機字符密碼,像 i%Mk3c4n,但是你的規則實際上并沒有這樣執行,這些密碼是個麻煩事而且不安全,除非它們足夠長——使得它們成為更麻煩的事。打出這些密碼很痛苦,尤其是在那些你沒有安裝密碼管理器的手機和計算機上。
其次,使用不安全密碼的人依舊會使用愚蠢的密碼(比如 Loverboy1964),所以你沒有幫助任何人。
停止強迫我使用你專制的規則并鼓勵其他人這么做——我的密碼是更好呢。
例子
那位博主允許使用的 2 個密碼:
下面這兩個是那位博主不允許使用的密碼:
解決方案
我不知道,但是如果你真的想要執行一些比此列表上的密碼更安全的東西,那就不要強制不必要的復雜模式。你的驗證規則,還是會讓人繼續用的原密碼中的大部分,只是增加一個大寫字母,或兩三個數字。
(注1:此處提到的密碼列表,里面都是 123456 、password、qwerty 之類的「愚蠢密碼」)
相反,為什么不提高密碼所需的最小長度,禁止 3 位或更長的數字序列 /[0-9]{3,}/?
你可以在那之后往前走一小步,不允許同樣的字符在一行(相鄰)重復兩次以上 /(.)1{2,}/,而且還沒有太多的麻煩。
這將消除大部分的困擾,并不會不必要地限制您的用戶密碼選擇。
更新
更好的是,為什么不忘記所有這些規則,只使用一個最小密碼強度要求。
來自 reddit 網友 sarciszewski 的建議:
我不明白為什么那么多人不用 Zxcvbn。 https://github.com/dropbox/zxcvbn
https://github.com/bjeavons/zxcvbn-php
我們并不特別關心你的密碼包含了什么,只要密碼強度估計量足夠好就行。想要用2000個’A’構成一個ASCII penis來檢測,zxcvbn 不會提醒你密碼不包含小寫字母不能使用而讓你失望。
相關漫畫
密碼強度 (xkcd)
《在 Laravel 中強制復雜密碼的建議》(英文原文)
根據簡單優雅的 Laravel 文檔,我將快速介紹如何促進用戶使用更好的密碼。通過 Authentication 的標準文檔,我們用一個注冊表單來說明。在 Laravel 的 AuthController 中,我稍作了修改。
(伯樂在線補注:Laravel 是一個 PHP Web 開發框架。) protected function validator(array $data) { $messages = ['password.regex' => "Your password must contain 1 lower case character 1 upper case character one number"]; return Validator::make($data, [ 'name' => 'required|max:255', 'email' => 'required|email|max:255|unique:users', 'password' => 'required|confirmed|min:8|regex:/^(?=\S*[a-z])(?=\S*[A-Z])(?=\S*[\d])\S*$/', ], $messages); }
使用文檔 http://php.net/manual/en/function.preg-match.php 和 Laravel 文檔的正則表達式規則,我可以設置一個表達式來檢查這些字符,我還可以設置一個自定義消息如果失敗。
通過這些微小的工作我們可以用一個錯誤消息來幫助用戶設置更好的密碼。
關于作者:LynnShaw
微博:@蕭蕭蕭寧 個人主頁 · 我的文章 · 25
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的php密码复杂,不要再强迫我设置复杂密码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 调用变量方法名,php中引用(变
- 下一篇: php中文歌词,详细介绍HTML5使用A