看一下这个登录页面,特别是标记为 Returning Members 的部分中的表单。正如您可以通过查看 HTML 或使用 Firebug 等工具进行挖掘来验证的那样,实际表单包含四个标签:一个用于电子邮件地址和密码,一个名为“memberAlready”的不可见输入,其中包含值“yes”,和一个图像形式的提交按钮。到目前为止,完全通用。
但是,如果您在提交表单时检查表单数据(使用Tamper Data或其他浏览器上的等效项,您将看到两个额外的表单字段已潜入响应中:ACTION(loginCheckout).x和 ACTION(loginCheckout).y。
它们都有两位整数值,这表明它们只是用来验证提交者是实际的网络浏览器而不是机器人。据推测,它们与提交按钮有关,其定义如下:
<input type="image" name="ACTION(loginCheckout)" value="Login" src="/images/login/login.gif">
令我困惑的是,即使在浏览器中禁用了 JavaScript ,这些额外的表单字段也会出现。因此,它们可能不仅仅是某个事件处理程序在某处插入的东西。
此外,如果您以编程方式提交表单(例如,通过在 JavaScript 控制台中运行 document.forms[1].submit()),则不会生成额外的字段并且登录尝试会失败。这向我表明,字段的插入取决于基本 HTML 表单提交机制之外的东西。但如果不是 JavaScript,那“东西”可能是什么,我不知道。
有没有人认识到这种模式或有关于如何插入验证字段的理论?