Зависит от того, насколько независимы эти два сайта. Если они совместно используют доступ к чему-то частному (базе данных или некоторому файловому пространству), то вы можете рассмотреть возможность передачи случайного значения между ними. В противном случае, если вы можете использовать подход время + соль, который позволяет только тем, кто использует ту же соль / алгоритм, генерировать действительные URL.
M = Основной сайт
H = Справочный сайт
K = Значение ключа, передаваемое между ними (в виде обычного текста, в порядке)
A: серверное время + соль:
XMIT : M время хэширования (округлено до -сказать- ближайший десятиминутный маркер) + некоторое случайное значение (соль), чтобы сделать K . И добавляет K к URL справки (еще лучше, если запрос справки - POST
, поэтому K не виден пользователю).
RCV : H завершает тот же хэш, используя тот же алгоритм, и если его хэш совпадает с предоставленным K , тогда доступ предоставляется. В противном случае H показывает пустую страницу (возможно, в целях безопасности они предпочли бы, чтобы детали сайта держались в секрете?) Или сообщение об ошибке (больше риска, но полезно для законных пользователей).
REQ : Оба сайта на одном сервере ИЛИ оба сайта на серверах, которые разумно синхронизированы во времени - нет необходимости в совершенной синхронизации из-за 10-минутного квантования. Важно, чтобы значение соли было одинаковым на обоих серверах и не было общедоступным (его также можно обновить, если когда-нибудь возникнет опасность, что третья сторона выяснит это).
БЕЗОПАСНОСТЬ : соль никогда не передается в виде обычного текста между двумя серверами, но поскольку передаваемый ключ работает только в течение определенного периода времени, даже если кто-то прослушивает значение (или копирует его из источника из * 1046) * M ) получить доступ можно только временно. Вам необходимо округлить до ближайшего n минутного маркера, чтобы (а) дать разумное время посетителю страницы для запроса помощи (б), поскольку запрос и проверка будут занимать небольшое количество времени друг от друга и (в) потому что, если сайты находятся на разных серверах, время не будет одинаковым. Безопасность достигается за счет сохранения конфиденциальности и алгоритма вычисления времени.
ПРИМЕЧАНИЕ : При H вам может потребоваться проверить два значения K , чтобы учесть случаи острых изгибов, когда скругление ведет M и H в разное время (из-за разного времени или из-за задержки в обработке)
B: База данных / ключ файла:
XMIT : M генерирует случайное значение для K и сохраняет его и время истечения в таблице или файле базы данных, которые H может получить доступ. Снова M присоединяет K (без тайм-аута) к GET или POST к H .
RCV : H проверяет значение по списку сохраненных значений, и если оно найдено и не истекло, доступ предоставляется.
REQ : Оба сайта имеют доступ к общему хранилищу файлов или базе данных. Таблица или файл базы данных должны хранить несколько случайных значений. M или H должны очистить записи с истекшим сроком (либо как часть их кода операции, либо может быть настроена запланированная задача [cron job] для выполнения этого через регулярные промежутки времени)
БЕЗОПАСНОСТЬ : Хотя K находится в виде обычного текста, знать его не имеет смысла - опять же, перехват значения или копирование его из источника откуда-то только предоставит доступ В временно.
В целом
В зависимости от того, насколько вы терпимы к тайм-аутам пользователя или неавторизованным источникам, использующим «найденные» клавиши, вы можете использовать AJAX для генерации значения при нажатии кнопки справки и поддерживать очень низкий тайм-аут (17 секунд?)