UI交互中何时需要机器人程序保护

When is a bot protection necessary in UI interactions?

本文关键字:机器人 程序保护 何时需 交互 UI      更新时间:2023-12-25

这个问题很宽泛,但我会用我的用例缩小范围。

我的站点中不使用表单,只使用对php服务的ajax调用。基本上,我使用风格化的跨度和相关的"点击"事件,这会导致ajax请求将所有内容发布到服务器。

  • 没有CCD_ 1元素
  • 没有<input type="submit">元素
  • 如果javascript被禁用,那么。。。什么都不起作用(这不是一件好事)

但我仍然想确保没有智能的$ss机器人会用我的"表单"生成垃圾。

所以我的问题是:在这种情况下,我需要captcha或类似的机器人保护吗?


根据给出的答案,以下是我选择实现的解决方案:

html:

<form id="honeypotform" action="http://whatever.com">
    <input type="text" id="formbody">
    <input type="submit" id="submitbtn" value="Submit">
</form>

css:

#honeypotform { display: none; }

真正的提交链接:

<span onclick="do();">Submit</span>

链接动作:

function do() {
    if (formbody.value != "") return true; 
    /* ... */
}

几天后,我会跟进这篇帖子,对我的结果进行反馈。

Bot到底做了什么:它们实际上检测表单中的所有输入元素,并运行一个脚本,用一些有效的文本填充输入,从而用虚假的垃圾条目填充数据库。

如何解决这个问题:它非常简单,每个表单验证都必须遵循这个模式。您可以始终在表单中放置一个隐藏的输入字段,并为其指定一个空值。

在服务器端验证时,只需确保此条目为空即可。如果是EMPTY,则继续执行插入查询,否则将其视为BOT攻击填充垃圾条目。

有趣的阅读:当机器人攻击!

在不使用提交按钮的情况下,将您的输入包含在表单标记中并不是一个坏主意。(我推荐这个)

以防万一,如果您考虑禁用javascript,您的ajax将无法工作。

对于偏执的开发人员来说,将服务器端验证作为PLAN B总是一个好主意。优质工作

举个例子:你所给予的仍然是脆弱的。

<form>
<input type="text" id="name">
<input type="text" id="contact_no">
<input type="text" id="password">
<input type="hidden" id="email">//just seduce the BOT(considering that the bot reads the id or any other attribute to fill up values.Make sure on the server side $("#email").val is always zero..be it on client or server)
<input type="text" id="original_mle">//store this in db after server side validation
</form>

@安德烈亚斯·比约恩:是的。。那是个漏洞。。如果有一个专门为我的表单设计的机器人提供恶意数据条目,我担心我会失败。CAPTCHA似乎是这种情况下的唯一解决方案。