Мы пытаемся свести к минимуму попадания ботов в наш поисковый URL (то есть он не загружает форму, а просто отправляет параметры), и я думаю, что использование одноразового номера в скрытом вводе решит эту проблему, но наш администратор говорит, что балансировка нагрузки серверы могут отправлять nonce формы с одного сервера, но отправка формы может быть обработана другим сервером … поэтому я не уверен, как мы могли бы заставить это работать, и я получаю, казалось бы, нерелевантные / несвязанные результаты при поиске в сети для весь этот вопрос.
Я работал над реализацией нескольких форм nonce несколько лет назад, но все они проходили через один и тот же сервер (один был автоматически сгенерирован CakePHP, другой я не помню, как мы это сделали). Мы используем httpd с PHP 5.x на серверах CentOS 6.x, и на серверах Live есть 1 промежуточный сервер, который обслуживает запросы, а затем 10 балансировщиков нагрузки (не уверен, что это действительно имеет значение, но у них есть копия файловой системы). и код при попадании в ту же базу данных).
Администратор знаком с балансировкой нагрузки (я никогда не делал этого) и говорит, что он может быть в состоянии реализовать какое-то постоянство или использовать memcache -d или что-то подобное (я никогда не пробовал это), но я не совершенно уверен в этом.
Да, одноразовый номер — хороший выбор. Рабочий процесс может быть
bin2hex(openssl_pseudo_random_bytes(16))
Других решений пока нет …