全文共3081字,預計學習時長9分鐘
不知道你是否會遇到這樣的情況:每次設置密碼時總會糾結半天,是設置一個簡單通用甚至是統一一樣的密碼呢?還是別出心裁想一個別人絕對猜不到破解不了的複雜獨立密碼呢?什麼樣的密碼才是最好的?
我們首先一起來看看下面兩個密碼
1. jK8v!ge4D
2. greenelephantswithtophats
哪個密碼更不容易被計算機破譯?哪個密碼更方便好記?兩個問題的答案都是第二個。但是用戶更多受到鼓勵來創建類似於第一個的密碼。人們總說要創建那種誰都記不住的密碼,然而這毫無道理。
下面就來好好講一講。
網際網路行業裡有很多奇怪的標準。驗證就是其中之一。作為前端開發,用戶輸入進輸入欄位中的內容,是需要我們去驗證的。用戶名、電子郵件、家庭地址、郵政編碼等都需要使用這些欄位。前端開發人員需要確保,用戶不會在這些欄位中輸入任何惡意的或者格式錯誤的內容。
舉個例子,郵政編碼的欄位通常只允許空格和數字,如果我們知道用戶居住的國家,就可以把它限定在一定範圍的字符內。電話號碼通常包括數字、加號(只出現在開頭)、破折號,甚至也可以有括號。郵箱地址較難驗證,最常用的方法就是它必須包括@符號以及後面的句點(.),儘管某個完全有效的郵箱地址可能沒有以上特徵。有的網站通過限制用戶名長度或指定字符來驗證名字,儘管這種驗證可能從未起效,畢竟人們名字的內容天馬行空。
實施驗證主要是出於以下幾個原因。一是安全保障。驗證能阻止用戶在欄位內輸入奇怪的代碼,以避免其更改資料庫或執行其他惡意操作。二是強制特定數據類型。如果某欄位應當只由數字組成,資料庫工程師就會設置只允許數字的資料庫列,這意味著任何非數字的字符都會引發錯誤。
但是實話實說,最主要的原因。是幫助用戶不犯錯。
強制密碼
出於某種原因,前端開發人員被寄予厚望,處理用戶輸入的傳統意義上的好密碼。它們應該至少有8個字符長,包括大小寫字母、數字,更令人惱火的是,它甚至應該包括特殊字符,比如感嘆號。
所謂好密碼的經典例子:jK8v!ge4D。考慮到大家經常被要求輸入這樣的密碼,說它是好密碼應該一點也不過分吧?
但大錯特錯。這個密碼爛透了。
首先,這是人能記住的密碼嗎?這導致的結局就是,用戶記不住密碼,所以把它寫在某個地方,或許是某張便條上。最後就帳戶被「黑」了。
其次是用戶會在不同的地方使用相同的密碼,畢竟要記下全部的複雜密碼簡直讓人抓狂。當你在某個正派網站創建帳戶時,神奇的代碼在幕後將密碼轉為一串哈希值,這通常被錯認成加密。最後在資料庫裡,密碼看起來長這樣:k5ka2p8bFuSmoVT1tzOyyuaREkkKBcCNqoDKzYiJL9RaE8yMnPgh2XzzF0NDrUhgrcLwg78xs1w5pJiypEdFX。即使資料庫被黑了,黑客也拿這些信息沒辦法。如果密碼很普通,算法又簡單的話,就有可能找到原始密碼;不過如果密碼有經過恰當哈希處理的話,通常是很安全的。
問題在於,不是所有的伺服器都會對用戶密碼進行哈希處理。如果在許多伺服器用相同的密碼,結局可能是某個不正規伺服器的資料庫裡,存著你的原始密碼的純文本。如果它們被攻破,黑客瞬間就能掌握使用同樣密碼的全部帳號。這很恐怖,卻比我們想像中更經常發生。
這就是為什麼不同網站要用不同密碼。然而如今每個用戶使用數不勝數的網站。怎麼可能記住全部不同的密碼?高級用戶可以使用密碼工具,但是普通用戶沒辦法這樣。
好啦,確實有更好的解決辦法。
破解需要多長時間?
看看這串字符:gtypohgt,由八個小寫字母組成的隨機字符。現代計算機只需要幾分鐘就能破譯它。用幾個數字替換一些字符,這個新密碼g9ypo3gt需要一個小時才能破解。將幾個字符大寫,密碼g9YPo3gT需要幾天才能破解。再加個特殊符號,g9Y!o3gT可能需要一個月。
從技術上講,g9Y!o3gT是個不錯的密碼。誰也猜不到它,它也在任何通用密碼的短名單上,計算機也得花費不少的時間來破解它。但是這個密碼人也記不住,因為它毫無道理可言。
再來看看我們的「小寶貝」:greenelephantswithtophats(綠色的大象帶著頂帽子)。24個字符,全都是小寫字母,沒有數字,沒有隨機字符,沒有惡作劇。然而這個密碼要用幾千年的時間才能破解。每增加一個字符,計算機破譯需要的時間都大大加長。greenelephantswithtophats不在任何常見密碼的列表,也沒有人能夠猜到它。
這可是個好密碼
創建那種講故事的密碼。需要Facebook的密碼?不如叫afaceforabookbutapizzaforahorse(把臉給書但是披薩給馬)。把密碼可視化。空間記憶是我們最強的記憶。一下子你就擁有了非常強大的密碼,不僅容易記住而且為各個網站量身定製。密碼一定要是那種即使很了解你的人也猜不到的東西。你經常談起海龜嗎?你見過紫色海龜嗎?沒有吧。大膽想像,你現在有了。在密碼裡說謊沒什麼大不了的:ioncesawapurpleturtleiswear(我發誓我見過紫色海龜)。這個密碼計算機要用上百萬年才能破解,連你的親姐妹也猜不到。
下面這些密碼很容易想出來。
flyingcarsthatcannotflyarenotflying.applesmaybegreatbutpearsarelikeheaven. goatswithshoesenjoytrainsonrainydays.
也沒有人能猜到。
然而,有的網站也不允許這些密碼。他們會抱怨沒有添加數字或大寫字符,或者嫌它太長,又或者因為其他荒謬的非技術原因。
這種時候可以稍微欺騙一下系統。在上述任何密碼的末尾加上A1!,任何不限密碼長度的系統都可以接受它。你現在有了大寫字符,數字和特殊字符了。即使你所有的密碼的結尾都是一樣的這三個字符,其餘位的密碼也會彌補它。ioncesawapurpleturtleiswear和ioncesawapurpleturtleiswearA1! 都沒法被計算機破解,除了末尾輸入時麻煩點,並無其他不同。
開發人員的意圖是好的。有人輸入的密碼很糟糕。網站管理人員不希望出岔子,所以他們試圖迫使用戶輸入像樣點的密碼,不管這有多麻煩。
下次要創建密碼時別忘了這招。想一個電腦很難破解,而你很容易記住的密碼,可別搞反了!
對了,即使你不想這樣,也千萬別用123456,password123和qwerty這樣的密碼。這些密碼真的糟糕透頂。
好吧,這也大概是強迫你去創建 jK8v!ge4D這樣密碼的原因了。
不管最終你設置的密碼是什麼樣的,自己別忘了才是最重要的……
留言點讚關注
我們一起分享AI學習與發展的乾貨
如轉載,請後臺留言,遵守轉載規範