Привет! Расскажите о том, как стоит защищать пользователя от компромитированных действий.
Например есть голосование. Скажем выбираем главу нашей великой страны.
Что бы проголосовать, пользователь должен отправить запрос скажем ?act=vote&id=1&opt=2
Таким образом он проголосует за второй вариант опроса с id 1. Всё круто, но допустим появился злостный мерзавец и он всех шлёт на эту ссылку таким образом набивая себе голоса.
Разумеется стоит как-то защитить пользователя от такого.
Например в варианте с логаутом, при авторизации я подаю пользователю куку с рандомной строкой.
И ссылку на логаут генерирую доставая значение куки.
Ну и при переходе пользователем по такой ссылке, если всё верно - происходит логаут.
Получается если злодей не знает "ключа" логаута - он никак не сможет разлогинить пользователя.
Отличный подход! Очень нравится он мне, но я вдруг осознал что защитил я только логаут.
Теперь вот решил защитить другие действия и понял что таких действий у меня довольно много.
Я решил что создать один ключ подтверждения действий не достаточно.
Как минимум я бы хотел разграничить этот ключ с ключём для более опасных действий вроде удаления аккаунта или тем более действий в админ панели...
А теперь вопрос. Правильно ли я рассуждаю? Для каждого действия должен быть уникальный ключ?
И в случае если вы ответите "да", то как хранить эти ключи? Хранить 50 кукисов, мягко говоря очень странно.
В мыслях разве что отталкиваясь от одного ключа - генерировать другие на основании какого-то алгоритма.
Но в этом случае негодяю достаточно узнать главный ключ и благодаря ему и зная алгоритм генерирования ключей он сможет сгенерировать нужные ему ключи действий, составить ссылки и предложить пользователю перейти по таким ссылкам. И если например такое случится, вполне вероятно он сможет кинуть такую ссылку пользователю с правами администратора и тот в свою очередь сделает к примеру администратором этого злоумышленника.
Вопрос в том, как предотвратить такую возможность.
И имеют ли право на жизнь мысли о том, что пользователь упустил свой ключ действий? Ведь в этом случае злоумышленник в прямом смысле получил доступ к куке. Ну а если так, то что ему вообще помешает взять куку с ключём авторизации и (в случае если пользователь не включил привязку сессии к ip) подставить куку в свой браузер, обновить страницу и получить полный доступ к аккаунту пользователя.
Добавлено через 1 час 0 минут
Бамп
Добавлено через 44 минуты
Такая печаль. Неужели меня просто игнорят? Если так, возможно стоит пересмотреть взгляды на мир.
Ну или просто пойти на другой форум. В любом случае плевать. Если не будет ответа, просто забью на этот форум до каких нибудь лучших времён
Например есть голосование. Скажем выбираем главу нашей великой страны.
Что бы проголосовать, пользователь должен отправить запрос скажем ?act=vote&id=1&opt=2
Таким образом он проголосует за второй вариант опроса с id 1. Всё круто, но допустим появился злостный мерзавец и он всех шлёт на эту ссылку таким образом набивая себе голоса.
Разумеется стоит как-то защитить пользователя от такого.
Например в варианте с логаутом, при авторизации я подаю пользователю куку с рандомной строкой.
И ссылку на логаут генерирую доставая значение куки.
Ну и при переходе пользователем по такой ссылке, если всё верно - происходит логаут.
Получается если злодей не знает "ключа" логаута - он никак не сможет разлогинить пользователя.
Отличный подход! Очень нравится он мне, но я вдруг осознал что защитил я только логаут.
Теперь вот решил защитить другие действия и понял что таких действий у меня довольно много.
Я решил что создать один ключ подтверждения действий не достаточно.
Как минимум я бы хотел разграничить этот ключ с ключём для более опасных действий вроде удаления аккаунта или тем более действий в админ панели...
А теперь вопрос. Правильно ли я рассуждаю? Для каждого действия должен быть уникальный ключ?
И в случае если вы ответите "да", то как хранить эти ключи? Хранить 50 кукисов, мягко говоря очень странно.
В мыслях разве что отталкиваясь от одного ключа - генерировать другие на основании какого-то алгоритма.
Но в этом случае негодяю достаточно узнать главный ключ и благодаря ему и зная алгоритм генерирования ключей он сможет сгенерировать нужные ему ключи действий, составить ссылки и предложить пользователю перейти по таким ссылкам. И если например такое случится, вполне вероятно он сможет кинуть такую ссылку пользователю с правами администратора и тот в свою очередь сделает к примеру администратором этого злоумышленника.
Вопрос в том, как предотвратить такую возможность.
И имеют ли право на жизнь мысли о том, что пользователь упустил свой ключ действий? Ведь в этом случае злоумышленник в прямом смысле получил доступ к куке. Ну а если так, то что ему вообще помешает взять куку с ключём авторизации и (в случае если пользователь не включил привязку сессии к ip) подставить куку в свой браузер, обновить страницу и получить полный доступ к аккаунту пользователя.
Добавлено через 1 час 0 минут
Бамп
Добавлено через 44 минуты
Такая печаль. Неужели меня просто игнорят? Если так, возможно стоит пересмотреть взгляды на мир.
Ну или просто пойти на другой форум. В любом случае плевать. Если не будет ответа, просто забью на этот форум до каких нибудь лучших времён