0

我必须实现验证码以停止机器人,但问题是我在一个应用程序中工作,我们没有在客户端创建任何东西(没有 cookie 等),我们没有创建任何会话。

一种可能性是我们为用户创建验证码图像和一个秘密字符串(作为隐藏参数),并且在提交页面时,可以使用相同的信息使用一些密钥来验证验证码。秘密字符串将使用服务器上的密钥创建,并且相同的密钥将用于验证验证码。但是任何聪明的恶意用户都可以保留这两个输入(或任意数量的输入参数),并且可以在以后随时使用这些参数进行身份验证。我可以在验证码上放置一些时间戳,但在多服务器/集群架构中它可能会导致问题,因为该时间戳文件需要在服务器之间和服务器之间同步。

还能有其他的可能吗?

我需要实现它的架构 - 多服务器/多集群没有用户的信息存储在服务器中,不能创建 cookie 或会话

4

1 回答 1

0

我认为您自己或多或少地提供了解决方案。

您可以根据 (1) 密钥、(2) 编码的超时标记、(3) 调用者的 IP 地址以及 (4) 调用者的浏览器标识(浏览器 +版本号)。这应该是非常独特且难以(并非不可能,但很难)欺骗的。

不用说,你必须保持超时时间非常短,比如 15 秒左右。

于 2013-10-08T13:43:31.000 回答