所以我的标题的基本答案是使用Captchas。我同意,他们很棒,我正在使用google的recaptcha最新版本。我想在解释其他任何内容之前说明我们在同一页面上。
我一直在考虑用户体验,基本上如果我要保护我网站上的每个表单帖子,我必须在每个页面都贴上验证码。这不是非常用户友好。它令人讨厌,人们不愿意这样做。但是,我已经注意到Steam这样的网站上的功能,它允许你登录几次,如果你弄错了,可以说3次,然后就会开始为你显示验证码。
我喜欢这种方法,你得到3次尝试,如果你弄错了,那么你将开始需要证明你是人。此外,我想完全阻止你后,甚至访问我的网站10次尝试。不幸的是,我不知道如何实现这一目标。
我的问题是:
如何跟踪您尝试登录然后在3次尝试后向您抛出验证码并在10次尝试后完全切断您的尝试?我已经考虑过cookie但可以清除。我是否必须对外部IP做些什么?这会是太多开销吗?每次你在网站上提交任何表格(错误与否)我都会把数据写入你的柜台并加1,看起来太多了。有没有更好的办法?你会怎么做?
我正在使用EF6 - C#开发ASP.NET MVC5框架。
编辑:
我看到投票过于宽泛,我不确定如何更清楚,但这是我的尝试:
跟踪用户未登录时提交表单的尝试的最佳方式是什么?
编辑2:下面链接的问题可能是重复的地址,在某个用户名达到阈值后显示验证码,我不喜欢这种方法。我希望将更多内容限制在单个攻击者身上并阻止他们关闭,而不是那些将在之后尝试登录的合法用户。这个问题也没有解决如何在太多次尝试后阻止该用户加载网站。