查看一下此登录页面,特别是标记为返回成员的部分中的表单。通过查看HTML或使用Firebug之类的工具进行验证,实际表单包含四个标记:一个用于电子邮件地址和密码,一个称为"memberAlready“的不可见输入,其中包含值"yes",以及一个以图像形式显示的submit按钮。到目前为止,非常普通。
但是,如果在提交表单时检查表单数据(使用篡改数据或在另一个浏览器上使用其等效的表单),您将看到另两个表单字段已被偷偷输入响应: ACTION(loginCheckout).x和ACTION(loginCheckout).y。
它们都有两位数的整数值,这意味着它们只是为了验证提交者是实际的网络浏览器而不是机器人。想必,它们与submit按钮有某种关系,该按钮的定义如下:
<input type="image" name="ACTION(loginCheckout)" value="Login" src="/images/login/login.gif">让我感到困惑的是,即使在浏览器中禁用JavaScript时,这些额外的表单字段也会显示为。因此,它们可能不仅仅是某个事件处理程序插入的东西。
此外,如果您以编程方式提交表单(例如,通过在JavaScript控制台中运行document.forms1.mit()),则不会生成额外的字段,并且登录尝试失败。这表明,字段的插入取决于基本HTML表单提交机制之外的内容。但如果不是JavaScript,那“东西”会是什么,我不知道。
是否有人认识到这种模式,或者有关于如何插入验证字段的理论?
发布于 2012-04-12 01:21:07
您所看到的X和Y值是因为submit按钮是一个输入type=image。它们对应于点击图像时光标所在的图像中的X和Y位置。它们是由浏览器本身添加的,正如HTML规范所要求的那样。第17.4.1节指出,对于图像输入类型
当使用指向设备单击图像时,表单将被提交,单击坐标将传递给服务器。X值以图像左侧的像素为单位,y值以图像顶部的像素为单位。提交的数据包括name.x=x-value和name.y=y-value,其中" name“是name属性的值,x-value和y-值分别是x和y坐标值。
你会注意到它只提到了指点设备的使用。如果使用键盘提交,则不会创建值。
发布于 2012-04-12 01:22:47
看看您在这里发布的代码:
<input type="image" name="ACTION(loginCheckout)" value="Login" src="/images/login/login.gif">注意,这是一个图像输入类型,用于提交登录表单。提交时似乎注入的附加值只是x和y坐标,您单击该坐标就可以提交表单。它们不是JavaScript在表单提交时注入的附加值,而是由浏览器本身添加的。
试着点击图像的不同区域,查看值的变化。
使用JavaScript提交表单时,不单击图像,这就是表单提交中不包含x和y值的原因。
替换<input type="submit" />元素的图像将删除x和y坐标。
希望这能有所帮助。
https://stackoverflow.com/questions/10116163
复制相似问题