Я создаю метод для пользователей моего сайта, чтобы связать их учетные записи, чтобы ресурсы могли быть распределены между ними. Мой процесс до сих пор:
Мне интересно, насколько я должен быть в безопасности с этим последним шагом. Моя ссылка для подтверждения в формате: domain.com/link-confirm.php?fromid=xxx&toid=yyy
Теоретически, любой мог бы подделать эту ссылку, если бы он знал идентификатор пользователя своей цели, таким образом устанавливая соединение без разрешения.
Я попытался хэшировать оба идентификатора пользователя, а затем сканировал базу данных пользователей на предмет совпадений, но password_verify
Функция работает так долго, что время ожидания страницы истекает (а это всего 1000 пользователей).
Что я хотел бы знать, это:
Имеет ли смысл мой план выше?
Есть ли более аккуратный способ сделать это?
Правильно ли я беспокоюсь о спуфинге (подключение учетных записей само по себе не делит какие-либо данные между пользователями, оно просто позволяет любому пользователю инициировать)?
Спасибо
Вы можете просто зашифровать оба значения идентификатора, и после получения их от get — расшифровать их, здесь не нужно использовать хеши. Таким образом, кому-то понадобится тысячи лет, чтобы обмануть их.
Что вы можете сделать, это сгенерировать уникальные данные для каждого запроса на привязку аккаунта и потребовать, чтобы эти уникальные данные были отправлены вместе с запросом на принятие ссылок.
Так, например, пользователь A запрашивает связь с пользователем B, вы сохраняете запрос с некоторыми уникальными данными, такими как случайный хеш и временная метка, а затем, когда пользователь B нажимает «принять» в своем электронном письме, он отправляется на страницу на вашем сервере. , Ссылка в электронном письме содержала уникальные данные, представленные на странице. Вы проверяете, действительно ли уникальные данные являются данными, которые были сгенерированы, когда пользователь А отправил запрос, и, если это так, бум, связали пользователей.