Помимо решений с хранением уникального ключа в БД, существует более удобный, но, возможно, менее безопасный метод (уязвимый для раскрытия секретного ключа и взлома хеша).
Создание URL-адреса, содержащегоuserId
и hash(userId + secretKey)
, где secretKey
- это уникальный ключ вашего приложения, а hash
- это что-то вроде SHA-1.Таким образом, злоумышленник не может вычислить хеш, если он не знает секретный ключ, и вы можете проверить запрос на подтверждение, сравнив входящий хеш с вновь вычисленным.
SHA-1 можно вычислить с помощью java.security.MessageDigest
или кодек Apache Commons DigestUtls.shaHex()
.
Вы также можете указать дату истечения срока действия, чтобы сделать вашу ссылку подтверждения действительной в течение ограниченного времени.