神秘.x和.y表单字段 - 这些来自哪里?

时间:2012-04-12 01:14:30

标签: html forms

请查看this login page,特别是“返回会员”部分中的表单。您可以通过查看HTML或使用Firebug等工具进行验证,实际表单包含四个标记:一个用于电子邮件地址和密码,一个名为“memberAlready”的不可见输入包含值“yes”,以及图像形式的提交按钮。到目前为止,完全通用。

但是,如果您在提交表单的位置检查表单数据(使用Tamper Data或其他浏览器上的等效表单,您会看到另外两个表单字段已潜入响应中: ACTION(loginCheckout).x和ACTION(loginCheckout).y。

它们都有两位数的整数值,这表明它们仅用于验证提交者是实际的Web浏览器而不是机器人。据推测,它们以某种方式与提交按钮相关,其定义如下:

<input type="image" name="ACTION(loginCheckout)" value="Login" src="/images/login/login.gif">

令我感到困惑的是,即使在浏览器中禁用了JavaScript ,这些额外的表单字段也会显示为。所以他们可能不仅仅是某个事件处理程序插入的东西。

此外,如果您以编程方式提交表单(例如,通过在JavaScript控制台中运行document.forms [1] .submit()),则生成额外字段 并且登录尝试失败。这告诉我,字段的插入取决于基本HTML表单提交机制之外的内容。但是,如果它不是JavaScript,那么“事情”可能是什么,我不知道。

有没有人认识到这种模式,或者有关于如何插入验证字段的理论?

2 个答案:

答案 0 :(得分:4)

看看你在这里发布的代码:

<input type="image" name="ACTION(loginCheckout)" value="Login" src="/images/login/login.gif">

请注意,这是一种图像输入类型,用于提交登录表单。提交时似乎注入的其他值只是您单击图像以提交表单的x和y坐标。它们不是JavaScript在表单提交时注入的附加值,它们是由浏览器本身添加的。

尝试点击图片的不同区域,看看值的变化。

使用JavaScript提交表单时,不要单击图像,这就是表单提交中不包含x和y值的原因。

替换<input type="submit" />元素的图像将删除x和y坐标。

希望有所帮助。

答案 1 :(得分:1)

您看到的X和Y值是因为提交按钮是输入类型=图像。它们对应于图像中单击图像时光标所在的X和Y位置。它们是由浏览器本身添加的,因为HTML specification需要它。第17.4.1节规定对于图像输入类型

使用指点设备点击图像时,会提交表单并将点击坐标传递给服务器。 x值是以图像左侧的像素为单位测量的,y值是从图像顶部开始的像素值。提交的数据包括name.x = x-value和name.y = y-value,其中“name”是name属性的值,x-value和y-value分别是x和y坐标值。 / em>的

您会注意到它只提到使用指点设备。如果使用键盘提交,则不会创建值。