【发布时间】:2019-10-18 09:23:12
【问题描述】:
我有垃圾邮件问题。一些机器人(我相信)正在绕过 Google recaptcha 并将如下字符串插入到我网站上的表单中:
dtbNPRpfcz
VvAJEXqueSKscY
有谁知道我可以使用的任何 JS 或 C# 代码很可能表明上述字符串是随机生成的?
如果我可以检查正在填写的字段并知道其中有几个可能是机器人生成的,那么我可以阻止提交。
例如,上面的字符串似乎有超过正常数量的 ucase 字符。
更新:目前正在考虑对某些字符串使用密码强度检查器。如果字符串高于弱,那么它很可能是垃圾邮件。我的网络主机说“尝试另一个 recaptcha”。
更新:
嗯。我在这方面学到了很多东西并获得了一些有用的代码,所以非常感谢您的输入和回答。然而,在忽略了周末的问题后,我又看了一遍。我注意到垃圾邮件机器人正在绕过所有的表单验证。然后一分钱掉了。该机器人将直接路由并发布到它。我没有设置 CSRF(跨站点请求伪造)。这意味着代理可以从站点域外部发布到 url。呵呵!
我已将此添加到表单中:
@Html.AntiForgeryToken()
但我的一些路线缺少检查它的代码:
try
{
this.ValidateCsrfToken();
}
catch (CsrfValidationException)
{
return Response.AsText("Csrf Token not
valid.").WithStatusCode(403);
}
所以。为浪费您的时间而道歉。这立即修复了它。
【问题讨论】:
-
对于这种网站格式来说,这是一个相当广泛的主题。此外,它几乎是在乞求外部工具,这是题外话(见help center)
-
如果我们坚持你的例子,与字典的简单比较(加上或减去一些模糊的变化)应该可以解决问题。但我怀疑你想要更复杂。此外,它还取决于您的性能要求。
-
另外,为了直接与您的问题相关,您是否尝试计算字符串中的大写字母?
-
页面应该发送什么?某种人类语言的合理文本?你确定这个机器人,或者它是什么,正在使用包含 Re-Captcha 的页面,还是直接从服务器发送请求?
-
我知道,如果您发送一封带有站点链接的电子邮件,并且您有一个表单(带有或不带有 recaptcha),Microsoft 的 Outlook 可能会尝试使用该链接提交表单,还有一个随机字符串。您仍然需要检查 recaptcha 挑战是否成功,因为机器人(通常)不会通过我认为的挑战。我不是这方面的专家,但我记得我们有一个场景,我们的服务器由于 API 中的一些随机字符串而记录了错误,并且是 Microsoft 为使用 Outlook 的用户自动完成的。
标签: javascript c# string random bots