假如重新設計 驗證碼 ,應該如何設計?

時間 2021-05-30 00:01:36

1樓:

我來說說我的想法。

驗證碼設計的初衷是為了驗證這個請求是否來自人類。

為什麼我們要驗證某個請求是否來自人類?

因為如果乙個人手動惡意提交,看起來效率是很低的,於是問題來了。

比如我的瀏覽器有自動填充,這個請求還是不是來自人類呢?

顯然是對吧。

所以,實際上驗證碼的功效,或者說起到的作用只不過是1 提高了提交的成本

2 相對降低了提交的頻率

現在我有乙個想法,如果我們不要人來辨別驗證碼,而選擇分派某個有一定計算量的,同時又容易驗證的計算任務分派下去,其實也是可以起到上面的要求的。

所以,我的答案是,伺服器發乙個seed,讓客戶端計算乙個magic值,使得hash(seed + magic)的末尾有若干個0。。

對,就是xx幣設計的思路。

這樣提交的頻率實際就成了對攻擊方算力的限制。。

稍等,可是這樣還是可以攻擊啊!

讓攻擊方幫你算xx幣!(簡直酷炫

2樓:Ivony

這種問題讓人哭笑不得。

這個問題暗含的邏輯是,驗證碼是乙個很糟糕的設計,但是大家都習慣了所以也沒辦法就這樣了。

拜託!驗證碼的確是乙個糟糕的設計,但現在沒有任何習慣的因素導致它如此流行好不

導致其流行的因素,都是他的優點:

例如實現簡單方便,低成本解決方案。

例如操作簡單方便,沒有學習成本。

所以在當前的技術侷限下,無論再發明多少次,驗證碼還會是這個鳥樣子!

如果真的有另外乙個兼具驗證碼優點,而又沒有這些缺點的方案,早就流行開了

驗證碼每天都在重新設計,你沒看到是因為那些方案都比現在的更不靠譜而已,,,,

3樓:好奇的產品汪

我會和廣告聯絡在一起,驗證碼的特點就是要讓使用者「努力的記憶一下」,因此可以將簡短的廣告資訊放裡面,例如:公司名稱,產品名稱等等。。。

4樓:

我覺得給出人類可以理解的內容最好,豆瓣不錯,輸入英文單詞,哪怕乙個字母看不清也能蒙的差不多。如果是毫無意義的字母組合看不清就只好換了,麻煩

5樓:

1. 美國那個哥們用這個驗證碼讓人識別他想要數位化的書,這個想法牛B;

2. 國內的乙個創業公司要用別的公司的logo來做驗證碼,整體上就是廣告,這個想法也挺出色的。

6樓:saighost

IBM的5年計畫是跟密碼說再見,驗證碼估計也會一起消失吧!

當然如果我做,

1.給出一句話,讓人念出來。

2.分析比對,儲存乙個MD5值,如果出現重複的情況即為機器錄音,返回失敗。

3.語言識別分析跟給出的話是否一致(要求》50%識別率即可),返回失敗或成功。

7樓:唐卓

有意思!我認為機器唯一無法完全理解的是人類的語言構成。這樣吧,隨機把一句通順的話中的所有字元排列順序打亂,然後讓你重新把它復原成一句通順無明顯語病的話。

8樓:鄧毅

首先,不要考慮判斷滑鼠軌跡或者鍵盤敲擊,因為在pc上只要是人的動作,後台程式都可以完美模擬出來。

其次,我們要解決的問題在某種角度有點類似於上飛機前的安檢-為了確保安全,採取一刀切的態度,首先懷疑一切,然後讓使用者自己證明清白。而使用者之所以反感,原因是增加了他們的互動成本。

所以我們應該考慮的是把這個額外的互動成本變得優雅起來。

我能夠想到的是:

1. 放棄鍵盤輸入,改用滑鼠驗證。因為大多數時間裡使用者的手是在滑鼠上的,所以通過滑鼠來完成驗證,可以在一定程度上降低肢體疲勞負擔。

2. 驗證的方式盡量簡單,不要給使用者製造太大的識別障礙。比如提供3個不同形狀的暗色圖,要求使用者按照一定順序點亮。

3. 讓這個過程有趣起來。製造輕鬆幽默的氛圍,也能稍稍緩解使用者的反感情緒。

9樓:

想到可以使用動態規則的方式,每次出現的規則條件不同讓使用者按當前的規則完成一套簡單的操作,但由於規則是動態的,每次都不同,即使相同出現的機率也小的很,就無法用機器自動輸入,至少使得自動輸入變得很不值得,可行性小的很的時候,就沒有辦法再用機器自動輸入驗證碼了.  比如,一段規則描述文字 + 命題結果是以此規則完成此命題. 可以反常規的方式.如1+1=1.5 2+2=2.5 那20+20=?

  邏輯便很難再判斷,一般程式是靜態的邏輯,即使再AI一點,那個AI的適用範圍和學習能力也是在有限的前提下.前前提做的無限,也許是個思路.

10樓:蘇格

本來就不需要驗證碼,每個人對一組文字的輸入頻度是不一致,那麼,這個頻率會形成獨有的個人特徵,依據這可形成獨特的個人特徵。而這個頻率不是乙個固定的,因此無法用暴力方法破解,因他記載的是乙個模式,而不是乙個值。口拙,不知是否表達清楚。

11樓:

我覺得,如果,對於使用者來說,驗證碼是有意義的那就很棒了:

1。提供資訊的驗證碼:這種資訊可以是一句話新聞,或者一句話小百科,那麼它對使用者就是有意義的了,增長了使用者的知識。

這句話呢就按照傳統的驗證碼那樣把這句話的每個字都扭曲一下,但是,其中某兩個字的顏色不同,而使用者需要輸入的就是這兩個字。這意味著,同一句話,可以成為不同的驗證設定。

2。或者是,對社會有益的東西:當我第一次看到recaptcha的時候,我超級激動,我完全被這個點子震撼了,居然我在輸入驗證碼的同時在幫助數位化書籍。

而我想的對社會有益的設計會簡單點:不要驗證碼,需要支付寶支付五角錢,我承諾這些錢用於公益。這樣,只要限制單個賬號在固定時段內的支付次數,就減少spam了,而我呢就想個和recaptcha類似的廣告吧:

stop spam, care more about the society.當然,這好像把預防spam的壓力轉移給了支付寶。

12樓:

只要是想在提交動作上驗證,就可以被機器模擬。

還是那句話,你能區分出和你聊天的是乙隻狗麼?

所以只能在內容上下功夫了。

樓上的很多同學,只要成功概率高於百分之一,機器就可以利用。

13樓:包子

驗證碼技術是一種計算機技術發展下的矛盾產物,人類渴望計算機能夠通過自動化的過程完成更多的任務,卻同樣要防止計算機被利用在破壞與惡意的用途當中。隨著人工智慧領域的研究成果越來越先進,計算機將變得越來越通情達理。

如果有一天,計算機能夠通過驗證碼驗證,我們又該如何區分人類和計算機呢?

14樓:oldhu

驗證碼的目的是驗證是人還是機器,想像中的乙個方法:收集在頁面上的滑鼠移動軌跡和鍵盤敲擊間隔,通過其隨機性來判斷是否是人類。

15樓:貳方土

驗證碼是乙個妥協的方案,技術無法識別人,只能讓人幹一些愚蠢的事情。

我們應該跳出修正驗證碼方案的角度去看問題,能不能不要驗證碼或者大多數情況下不要驗證碼。

比如GMAIL,當你密碼連續錯三次以後才要驗證碼,一般都不需要驗證碼;QQ異地登入時才需要你提供驗證碼;當然應該有更偉大的想法,總之最好不要讓使用者看到愚蠢的驗證碼~~~

16樓:王懊惱

接過乙個專案的時候有想過做乙個獨特點的驗證碼功能當時分析的結果是

既然驗證碼是乙個必填項【沒有實際意義】還不如和乙個選填項組合起來我們選擇的是「性別」 是乙個拖動「選擇」把性別的圖示拖到指定的位置當然也有「我不想說」的選擇 ....

每次性別的選擇都在指定位置增加乙個隨機的數,然後增加乙個「確認」隨機數的去掉小模組

功能我覺得還不錯 ^_^

但是也考慮過使用者名稱郵箱和出生年月日但是大部分都是輸入想找一些可以做選擇的,但是侷限性大沒辦法增加輸入項註冊的時候會讓人生厭

事例僅供參考

如何基於「以戰列艦為基礎」的設計思路重新設計阿拉斯加級大型巡洋艦

xiaoming zhang 無法合理化設計。這種設計的目的是在兩個不同戰艦級別取個偏上折中去壓制低等級的戰艦。對於大型戰艦而言是價效比極其糟糕的東西。因為大型戰艦需要占用為數不多的大型船台,需要消耗大量的工時和資源,因此數量是極其有限的,造大巡這種指標和綜合成本接近主力艦,卻無法同別國主力有效對抗...

魅族品牌的重新設計會向什麼方向發展?

單單乙個 魅 字就挺好的呀!能跟現在大部分用英文本母的商標分開,然後把現在的小圓圈再做的稍微大一些,把 魅 字放裡邊,再在後面上中的位置放乙個 魅 字,至於形狀的話要麼從 魅 這個字極度簡化,簡化到不像字的那種,形成乙個特殊的,一眼就能認出來的圖形。要麼就是基本正常人都能認出來是 魅 字的。 HSP...

如果重新設計製作鋼琴,會是什麼樣的?

虎皮紗 其實我最喜歡彈的是B大調,降D大調之類的,黑鍵多了我覺得很順手。每次教學生我也會說,B大調音階最簡單最好彈,指法也好記。 這是程式設計師在知乎被黑得最慘的一次。阻止你會鋼琴的從來不是樂器結構,而是急功好利不勞而獲浮躁的心。鋼琴的構造是目前最優解。其它的,吉他,相鄰純四度 大三度,你試試其它排...