2008-09-25 49 views

回答

6

你可能有一个隐藏的表单字段做+一个cookie。

你可以做的是建立一个nonce,并将其作为窗体的隐藏字段。然后,您会将其应用于与表单一起发送的Cookie。 cookie应该链接到隐藏字段,并且还应该包含某种随机数。最后,当表单被提交时,您可以检查cookie和隐藏字段,并查看它们是否正确。如果需要,请将其链接到表单原始请求的IP地址和用户代理。你甚至可以用一些Javascript来调味这一切。首先将隐藏的字段设置为空,但是接下来需要一些ajax来请求来自服务器的隐藏字段nonce。

这不会是完美的,但这应该让你有80%-90%的方式。有些体面的HTTP技能仍然可以欺骗它。

然而,它提出了这个问题,为什么你想区分该级别的请求?

或者你真的只是想弄清楚用户是否点击“提交”按钮? (如果是这种情况,则提交按钮的名称/值对应在请求实体/查询字符串中,具体取决于表单方法。)

0

我认为这是不可能的,除非客户端本身是共同经营(指客户端设置一些头)

0

不是真的。你可以检查用户代理字符串,但可以由调用者设置。

0

嗯,你可以看看代理字符串,看看它是否是从browsr,或从您的客户端应用程序(假设它有自己的代理字符串)

0

如果您拥有对客户端的控制权,那么您可以附加一个自定义标题来标识发件人。

一些JavaScript库在制作XmlHTTPRequests时已经这样做,以便您可以处理与标准请求不同的Ajax调用。

检查每个传入请求的标题以查看是否有任何可以使用的东西。

0

使用一些JavaScript设置一些值。

0

您不清楚您是否想要在合法的不同访问方法之间进行切换,或者针对伪造的攻击(即尝试看起来像普通用户的机器人或黑客)。

在第一种情况下,keprao对检查标题有一些很好的建议。在第二种情况下,基本上无法区分请求,但机器人可能会受到验证码或身份验证的阻碍。