Задать вопрос
jasonOk
@jasonOk
Легче болтать, чем код писать

Как правильно передавать параметры?

Допустим пользователь пишет комментарий, вместе с текстом передаётся id страницы, на которой пишется комментарий. Я знаю, что вопрос избитый, но всё же: как передавать id, чтобы изменить его было нельзя?

Поясню: это понятно, что на стороне сервера нужно проверять каждое действие пользователя, но как проверить следующее: человек хочет удалить комментарий, он нажимает на кнопку, у которой допустим data-id="1" а что если он возьмёт id своего другого комментария — data-id="2" подставит и нажмёт "удалить"?
Он без проблем удалит, так как и другой комментарий принадлежит ему. Как можно предотвратить подобные действия?
  • Вопрос задан
  • 394 просмотра
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 6
DmitryVoronkov
@DmitryVoronkov
Python Developer
Да пусть свои удаляет, главное чтоб чужие не мог, проверяй, принадлежит ли id к user_id
Ответ написан
Комментировать
miraage
@miraage
Старый прогер
Значит он сам захотел его удалить.
Ответ написан
Комментировать
khipster
@khipster
Разрешить для удаления только последний комментарий. Что тут сложно го?
Ответ написан
werber
@werber
Системный администратор Windows
У меня появилась другая, идиотская мысль - передавать переменную, например, isChanged, которая будет равна true, если DOM страницы притерпел изменение, причём пользователем. Например, решил в панели разработчика что-то в HTML коде сделать - переменная стала правдивой. Как это реализовать пока не знаю, может вообще бред пишу.
Ответ написан
aliencash
@aliencash
Партизан
Хорошо, а комментарии у вас никакого идентификатора не имеют? Нужно чтобы пользователь имел доступ не к осмысленным id, а только к результату хеш-функции(id страниы + id комментария + соль). На сервере вы все это вычисляете реальные значения, а не предоставленные пользователем. Совпало - действуете.
Ответ написан
как передавать id, чтобы изменить его было нельзя?

Чтобы id изменить было нельзя, его лучше никак не передавать.

Если пользователь может удалить любой коммент по id, то и разрешайте ему это делать, это его выбор. Даже если он вообще не будет пользоваться браузером, а будет генерить запросы из скрипта.

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

Вы предпринимаете какую-то странную попытку защитить юзера от самого себя. Не понимаю, почему это вообще может вас волновать, если это не угрожает данным других пользователей (т.е. авторизация всех запросов выполняется правильно).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы