Я бы рекомендовал, в дополнение к тому, что большинство здесь заявили о передаче зашифрованной информации, смотреть на нее так же, как если бы вы передавали конфиденциальную информацию через сторонний API. Как вы знаете, кто-то не подделывает запрос? Существует много протоколов для подлинного подтверждения подлинности запроса, в зависимости от того, насколько чувствительны ваши настройки. Вы открываете себя для взломанных аккаунтов, если не будете осторожны.
Даже если он находится на том же сервере, учтите следующее:
Когда кто-то переходит по ссылке, действию формы и т. Д., Которые передаются по зашифрованному ключу, что может помешать кому-либо прослушать его, прежде чем он попадет на защищенную версию вашего сайта? Если бы я был в общественном месте WIFI, это не было бы слишком надуманным. Я мог бы притвориться вашим сайтом, перенаправить запросы на свой ноутбук, взять токен и перенаправить посетителя туда, куда он пришел. Они предположили бы, что это был сбой, и не имели бы понятия. Теперь я могу войти в систему как они, и, возможно, пойти купить вещи на 10000 долларов с их кредитной картой в файл и отправить его куда-нибудь еще. Степень осторожности, которую вы принимаете здесь, должна соответствовать степени чувствительности.
Кроме того, убедитесь, что у вас истек срок действия ваших токенов (только одно использование, через X секунд и т. Д.), Но я бы также рассмотрел возможность использования шаблона Post-Redirect-Get на обоих концах, т.е.
Не показывать прямую ссылку на странице или в форме незащищенного сайта, но показывать ссылку, которая затем перенаправляет на бэкэнд (и обрабатывает весь токен / шифрование). Когда вы достигнете защищенной версии, сделайте то же самое (не оставляйте параметр «? Token = asdfjalksfjla» просто в URL; перенаправьте его).
Итак, формальные системы на основе токенов были разработаны для решения этой самой проблемы, но реализация OAuth только для этого может быть излишней. Потратьте некоторое время на планирование потенциальных уязвимостей перед выполнением. Просто потому, что было бы очень трудно угадать токен, не означает, что это невозможно (или не могло быть столкновений и т. Д.), Поэтому планируйте соответственно.
Вам также может понадобиться более сложная система управления сеансами, чем встроенные обработчики PHP. Я не знаю, можно ли заставить PHP продолжать сеанс через несколько посещений (переключение протоколов обрабатывается таким образом).