Может ли кто-нибудь украсть хеш-дайджест токена запоминания и создать поддельное печенье, используя хешированный дайджест?

Поэтому постоянные cookie-файлы уязвимы для перехвата сеансов, и один из способов кражи cookie-файлов заключается в компрометации базы данных, содержащей токены запоминания. Чтобы предотвратить это, нужно хранить хэш-дайджест токена запоминания вместо самого токена.

Мой вопрос: почему злоумышленник не может получить хэш-дайджест токена запоминания и подписанного идентификатора пользователя, создать новые куки в своем браузере и заполнить эти куки украденными хэш-дайджестами? потому что, насколько я понимаю, не будет BCrypt в аутентифицированных? метод поиска файлов cookie в вашем браузере и расшифровка их, когда они видят украденные хэш-дайджесты? или есть способ определить, были ли файлы cookie созданы пользователем или созданы на сайте?

  def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(cookies[:remember_token])
log_in user
@current_user = user
end
end

0

Решение

Если вы храните в базе данных только хэш токена запоминания, и злоумышленник может украсть этот хэш из базы данных, он все равно не знает о самом токене.

Файл cookie будет содержать оригинальный токен, и браузер отправит его на сервер. Затем сервер снова будет хэшировать этот оригинальный токен и сравнивать его с хэшем из базы данных.

Если вы знаете только хеш и не можете получить исходный токен с ним, то вы не можете подготовить cookie, потому что для этого нужен оригинальный токен. Криптографические алгоритмы хеширования, такие как SHA512, не позволят «декодировать» хеш.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]