在负载均衡器上形成随机数?

时间:2018-10-08 17:30:18

标签: php forms load-balancing nonce

我们正在尝试将搜索结果中的漫游器最小化(这意味着它不会加载表单而是发送参数),我认为在隐藏的输入中使用随机数可以解决该问题,但是我们的管理员说负载平衡的服务器可能从一台服务器发送表单随机数,但表单提交可以由另一台服务器处理...所以我不确定如何使它正常工作,并且当网络访问时,我似乎无关紧要/不相关的结果-搜索整个问题。

几年前,我从事几种形式的nonce实现,但是它们都通过同一台服务器(一个由CakePHP自动生成,另一个我不记得我们是如何实现的)。我们在CentOS 6.x服务器上将httpd与PHP 5.x一起使用,并且Live服务器有1个登台服务器来处理请求,然后有10个负载均衡器(不确定这是否很重要,但是它们具有文件系统的副本)和代码,同时访问同一数据库)。

管理员熟悉负载平衡(我从未做过),并说他可能能够实现某种持久性或使用memcache -d或类似的东西(我从未尝试过),但是我我对此不太确定。

1 个答案:

答案 0 :(得分:1)

是的,随机数是一个不错的选择。工作流程可能是

  1. 获取表单请求
  2. 生成随机随机数,例如.example-container { height: 400px; overflow: auto; }
  3. 将随机数存储在持久共享存储中。如果您不使用会话,那么像Redis或内存缓存之类的简单键值存储将是合适的。
  4. 将现时值以cookie或隐藏形式的值添加到响应中。
  5. 表单被重新发布回负载均衡器。如果您将cookie用于随机数,则负载均衡器可能会立即拒绝任何缺少cookie的请求。否则,请求将发送到其中一台Web服务器。
  6. PHP从POST或cookie形式读取随机数。如果丢失,请拒绝该请求(例如404)。
  7. 检查了随机数的共享存储或会话。如果找不到,请拒绝响应。如果找到它,请将其从存储中删除(因此无法再次使用)并处理表单提交。