我有一个.net c#网络应用程序,允许用户购买产品。
我的网站有一个付款页面,包含输入字段等。
我最近通过机器人进行了一些攻击,自动提交付款只是为了验证信用卡授权。
所以我需要更改我的页面,以便机器人不能这样做。所以我正在考虑这样做的建议?我已经开始更改字段名称,以便每次页面加载时它们都是不同的,通过哈希。还有其他提示吗?
答案 0 :(得分:1)
CAPTCHA将有助于阻止这一点。它将要求用户在页面通过之前完成验证检查。以下是关于如何在ASP.Net中实现CAPTCHA的sample implementation
答案 1 :(得分:1)
“验证码”是防止僵尸程序提交表单的标准方法。 Recaptcha是免费的,效果很好,实际上是通过其使用来帮助扫描书籍。
答案 2 :(得分:1)
我曾尝试过以下方法,它给了我很好的结果。
简而言之,我们的想法是创建一个不可见的字段,将其命名为机器人可以轻松理解它,并在服务器端检查该字段的值。如果它被填充,那么它肯定是一个机器人,你可以放心地忽略这个请求。 例如:
将您的FirstName字段重命名为,例如EmanTsrif。
添加另一个字段< input id =“FirstName”class =“trap_for_robots”>。
定义css类trap_for_robots:{display:none}(最好在独立的.css文件中 - 不要使用style =“display:none”!)。
在你的代码隐藏中检查if(FirstName.Text!=“”){//什么都不做,记录一些东西}。
答案 3 :(得分:0)
Ajax控制套件有一个“NoBot”控件可以使用。
http://www.asp.net/ajax/ajaxcontroltoolkit/samples/NoBot/NoBot.aspx
答案 4 :(得分:0)
请查看此维基百科article,阅读“停止机器人的技术措施”部分,它提供了一些措施来阻止机器人。
答案 5 :(得分:0)
我可以理解您正在尝试找到一种不涉及人机交互的解决方案,以尽可能保持用户体验。
由于恶意者正在使用您的网站检查信用卡有效性,因此您可能会更有针对性地滥用您的资源,而不是针对自动流程的常见阻止方案,例如评论垃圾邮件机器人等。根据“您的服务”对利用您网站的人的价值,将其锁定而不需要人工干预可能只有在他们弄清楚您所做的更改后才会有效。
例如,交替字段名称不会阻止他们按照您网站上的外观顺序填充字段。
让javascript填充隐藏的表单字段的解决方案只有在机器人不会说javascript时才会很好。
我建议使用在搜索验证码替代品时找到的所有技术,并为每个请求使用随机组合中的方法 - 然后希望另一个站点的安全性较低,以便他们开始使用不同的站点来获取所需的内容。 / p>
如果一切都没有帮助,您仍然可以使用涉及人工互动的解决方案。