標籤:style http io os 使用 sp java strong on
InfoQ 採訪了 CaptchaMvc 的建立者 Vyacheslav Volkov,與他一起探討了CaptchaMvc項目以及他對驗證碼未來的看法。
InfoQ:是什麼促使你建立自己的驗證碼類庫?
那個時候我正開始使用MVC 3架構。因為需要在自己的項目中使用驗證碼,所以我開始尋找一個能夠解決我的問題的解決方案。但是我能夠找到的所有方案都僅能夠在MVC 2上使用,有一些甚至根本無法使用。在搜尋了這麼多內容之後,我決定編寫自己的驗證碼實現,因此也就出現了CaptchaMvc類庫的第一個版本。這個版本非常簡單,但是即使是這樣,它也是受歡迎的。
InfoQ:CaptchaMvc和其他的驗證碼類庫之間有什麼不同?
CaptchaMvc是一個有彈性的、簡單的解決方案,它能夠解決你項目中所有與驗證碼相關的問題。你需要做的所有事情就是向你的項目中添加一個類庫,添加之後驗證碼就準備就緒了。該項目擁有使用驗證碼所需要的所有內容:
- 有兩種類型的驗證碼,普通的和數學的
- 支援在session或者cookie中儲存驗證碼
- 支援“智能驗證碼”
- 能夠很容易地擴充預設實現
該項目也在不斷地演變,我會盡量支援所有人提出的需求。我認為這些就是區分它和其他項目的主要內容。
InfoQ:你能預見一下什麼時候將不再需要驗證碼嗎?或者說可能不再有效?
我們都在夢想那個時候。針對機器人的保護將會一直需要,而驗證碼僅僅是實現這種保護的方式之一。有各種各樣不需要驗證碼的技術。例如,一些開發人員會建立一個“假的”輸入欄位,同時讓該域對使用者隱藏,當一個機器人試圖填充表單的時候,它很有可能會填寫該域。
儘管如此,我們也很難說驗證碼能夠有效地防止垃圾郵件,有許多服務允許繞過驗證碼。驗證碼僅能夠增強你的網站對機器人的防護,但是並不能提供全面的保護。
InfoQ:你列出該項目支援ASP.NET MVC 3、4和5。這些版本之間真的有很多區別嗎?
這些版本之間幾乎沒有什麼不同,僅僅是類庫中使用了MVC 4中添加的 AllowAnonymousAttribute 屬性。
InfoQ:如果你可以修改ASP.NET MVC外掛程式/類庫支援的任何內容,那麼你會修改什嗎?
ASP.NET MVC是一個非常了不起的Web架構,我喜歡它所使用的架構解決方案。對於ASP.NET Web API有一個地方我不喜歡,那就是我們不能多次讀取請求中的內容。我清楚為什麼要這麼設計,ASP.NET Web API中的內容體被看作是僅能夠讀取一次的單向流,但是有時候這樣讓人非常不方便。
我想要改變 WPF\Silverlight\XAML 中的很多內容,但是這個主題應該在另一個採訪中討論。
InfoQ:什麼是“智能驗證碼”,它和正常的驗證碼之間有什麼區別?
基本的想法是讓驗證碼對使用者更加友好,在最好的情況下使用者永遠不會看到驗證碼。有多種技術能夠讓驗證碼更加友好。例如,有一種技術稱為“假輸入欄位”。CaptchaMvc 支援多種技術能夠區分使用者和機器人。讓我簡短的介紹一下每一種技術:
- 假的輸入(類名—FakeInputIntelligencePolicy)——使用一個“假的”輸入欄位,正如我前面所寫的。
- JavaScript(類名—JavaScriptIntelligencePolicy)——嘗試著去檢查使用者是否啟用了JavaScript,如果使用者禁用了JavaScript那麼使用者必須輸入一個驗證碼
- 回應時間(類名—ResponseTimeIntelligencePolicy)——允許你設定一個時間,在該時間內驗證碼將被認為無效。假如一個機器人請求一個表單,填充它並提交…頁面載入和提交之前的間隔時間可能會少於一秒——沒有人能夠做到這一點。
- 多種方式的組合(類名—MultiIntelligencePolicy)——允許你將不同的策略聯合到一起。
我想要給出一個允許你設定“智能驗證碼”的程式碼範例,下面是一個我在我的網站上使用的程式碼範例:
CaptchaUtils.CaptchaManager.IntelligencePolicy = new MultiIntelligencePolicy(new FakeInputIntelligencePolicy(),new JavaScriptIntelligencePolicy(),new ResponseTimeIntelligencePolicy(TimeSpan.FromSeconds(3)));
現在,我正編寫一個將會支援ASP.NET Web API的新版本。到目前為止這就是我的所有計劃,但是將來的事情可能會有所變化,我將會添加一些其他的內容。
查看英文原文:Interview with Vyacheslav Volkov, Creator of CaptchaMvc
[轉] 採訪 CaptchaMvc 的建立者 Vyacheslav Volkov