防止机器人在 Web 应用程序中自动支付流程

Posted

技术标签:

【中文标题】防止机器人在 Web 应用程序中自动支付流程【英文标题】:prevention of bots automating payment process in web application 【发布时间】:2011-09-18 15:09:04 【问题描述】:

我有一个允许用户购买产品的 .net c# Web 应用程序。

我的网站有一个支付页面,带有输入字段等。

我最近通过机器人自动提交付款以验证信用卡授权受到了一些攻击。

所以我需要更改我的页面,以便机器人无法执行此操作。所以我正在寻找这样做的建议?我首先更改了字段名称,以便每次通过哈希加载页面时它们都不同。还有其他提示吗?

【问题讨论】:

【参考方案1】:

我尝试了一次以下方法,它给了我很好的结果。

简而言之,这个想法是创建一个不可见的字段,命名它以便机器人可以轻松理解它,并在服务器端检查该字段的值。如果它被填充,那么它肯定是一个机器人,你可以放心地忽略这个请求。 例如:

    将您的 FirstName 字段重命名为 EmanTsrif。

    添加另一个字段

    定义 css 类 trap_for_robots: display: none(最好在独立的 .css 文件中使用 - 不要使用 style="display:none"!)。

    在您的代码隐藏中检查 if (FirstName.Text != "") //什么都不做,记录一些东西 。

【讨论】:

【参考方案2】:

我可以理解您正在尝试寻找一种不涉及人工交互的解决方案,以尽可能保持良好的用户体验。

由于作恶者正在使用您的网站来检查信用卡的有效性,您可能正在处理更有针对性的资源滥用,而不是像垃圾评论机器人等自动化流程的常见阻止场景。根据“您的服务”对利用您网站的人的价值,在不需要人工交互的情况下将他们锁定可能只有在他们弄清楚您更改了什么之前才会起作用。

例如,交替的字段名称不会阻止它们按出现在您网站上的顺序填充字段。

只有在机器人不会说 javascript 的情况下,让 javascript 填充隐藏表单字段之类的解决方案才有效。

我建议使用在搜索验证码替代品时发现的所有技术,并为每个请求随机组合使用这些方法 - 然后希望另一个站点的安全性较低,以便他们开始使用不同的站点来获得他们需要的东西。

如果一切都没有帮助,您仍然可以使用涉及人工交互的解决方案。

【讨论】:

【参考方案3】:

查看这个***article,阅读“阻止机器人的技术措施”部分,它提供了一些阻止机器人的措施。

【讨论】:

【参考方案4】:

“验证码”是防止机器人提交表单的标准方法。 Recaptcha 是免费的,运行良好,实际上通过它的使用帮助扫描书籍。

【讨论】:

【参考方案5】:

CAPTCHA 将有助于阻止这种情况。它将要求用户在页面通过之前完成验证检查。这是一个sample implementation 说明如何在 ASP.Net 中实现 CAPTCHA

【讨论】:

【参考方案6】:

Ajax 控件套件有一个“NoBot”控件可供您使用。

http://www.asp.net/ajax/ajaxcontroltoolkit/samples/NoBot/NoBot.aspx

【讨论】:

我更喜欢这种没有用户交互的方法。 看这个控件,这是基于服务器端的回发。我正在通过 jquery 调用 wcf 服务,我如何将这个控件集成到这里? 你不会的。你没有在问题或标签的任何地方提到这些细节,所以我假设你有一个标准的 asp.net webforms 应用程序。

以上是关于防止机器人在 Web 应用程序中自动支付流程的主要内容,如果未能解决你的问题,请参考以下文章

React Native 上的 PayPal 自适应支付流程

微信小程序发起支付流程

测码奔腾·鼎新基于tesseract识别验证码实践

Paypal 自动支付每月订阅

App Store 自动续订,金额不定

如何防止订单重复支付?