【AICon】 如何构建高效的 RAG 系统?RAG 技术在实际应用中遇到的挑战及应对策略?>>> 了解详情
写点什么

采访 CaptchaMvc 的创建者 Vyacheslav Volkov

  • 2013-12-25
  • 本文字数:1644 字

    阅读完需:约 5 分钟

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

2013-12-25 09:021498
用户头像

发布了 321 篇内容, 共 115.4 次阅读, 收获喜欢 18 次。

关注

评论

发布
暂无评论
发现更多内容

七夕情人节,程序员的表白方式简直太秀了!

程序员生活志

程序员 七夕

SpreadJS 纯前端表格控件应用案例:实验室信息化管理系统

葡萄城技术团队

LeetCode题解:20. 有效的括号,for循环replace,JavaScript,详细注释

Lee Chen

大前端 LeetCode

linux入门系列11--Centos7网络服务管理

黑马腾云

Linux centos 网络配置 运维工程师

乘风人脸识别来了,企业能得到什么?

ToB行业头条

人工智能 人脸识别 百度大脑

ARTS 挑战打卡第十三周(200803-200809)

老胡爱分享

ARTS 打卡计划

正向代理与反向代理

王坤祥

nginx 反向代理 代理 正向代理与反向代理 Proxy

linux入门系列15--文件传输之vsftp服务

黑马腾云

Linux centos linux操作 linux运维

英特尔大小核试水 将推出8+8+1架构酷睿处理器

E科讯

一行代码实现简易服务器并共享文件

王坤祥

Python 共享文件

SpreadJS 纯前端表格控件应用案例:货运代理客户服务平台

葡萄城技术团队

大数据思维与运用

石云升

大数据 数据建模 数据驱动

SpreadJS 纯前端表格控件应用案例:PtLims云平台

葡萄城技术团队

【程序员自救指南】一个证书,让我哄好了小师妹

华为云开发者联盟

网络安全 浏览器 华为云 SSL证书 安全证书

linux入门系列12--磁盘管理之分区、格式化与挂载

黑马腾云

Linux centos 编辑器 linux运维 vi/vim

知识点:操作系统异常的分类

王坤祥

操作系统 异常

从“人居美学”的理念出发,木莲庄酒店很不一样

InfoQ_967a83c6d0d7

linux入门系列14--ssh服务及主机远程管理

黑马腾云

Linux centos linux运维 红帽认证

SpreadJS 纯前端表格控件应用案例:立信智能审计云平台(SACP)

葡萄城技术团队

兼具艺术情怀和舒适旅居体验,木莲庄做了什么

InfoQ_967a83c6d0d7

工作就是解决一个又一个问题

escray

学习 面试

高效程序员的45个习惯:敏捷开发修炼之道(5)

石云升

敏捷开发 熵增 用代码沟通

linux入门系列13--磁盘管理之RAID、LVM技术

黑马腾云

Linux centos raid lvm 磁盘挂载

百度联合发布全球最大中文自然语言处理数据共建计划“千言”

百度大脑

人工智能 百度 nlp 百度大脑

3D渲染集群,你了解多少?

华为云开发者联盟

容器 华为云 集群 3D渲染 3D模型

Python中的global关键字的用法以及如何设置项目级的Global变量

陈磊@Criss

一键超频 双C Carry,普通用户如何挖潜英特尔十代酷睿?

E科讯

Python实现一个计时功能的装饰器

王坤祥

Python 装饰器

7. Jackson用树模型处理JSON是必备技能,不信你看

YourBatman

json Jackson ObjectMapper 树模型

ARTS 挑战打卡第十二周(200727-200802)

老胡爱分享

ARTS 打卡计划

3.7亿条保单数据怎么分析?这个大数据平台有绝招

华为云开发者联盟

大数据 hadoop 数据湖 FusionInsight Kyligence

采访CaptchaMvc的创建者Vyacheslav Volkov_.NET_Jonathan Allen_InfoQ精选文章