SimBioT19
@SimBioT19
{{ user.about }}

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

У меня на сайте каждый пользователь спокойно может свой удалить комментарий. Удаляются комментарии через ajax — просто отправляется id пользователя и id комментария на файл delete.php, а там уже обращение к БД.
Проблема в том, что пользователь может заменить id комментария и удалить любой другой. Как от этого защититься? В голову приходит идея отправлять вместе с id пользователя также его уникальный хэш, если id пользователя в БД и хэш не совпадают, комментарий удалён не будет. Правильный ли такой подход и как сделать, чтобы пользователь также не мог изменить id на номер другого своего комментария? Как точно знать на каком комментарии пользователь нажал кнопку "удалить"? И вообще, как эта часть организована на тостере, например? Какие данные пользователь должен отправлять, чтобы ничего нельзя было подменить?
  • Вопрос задан
  • 423 просмотра
Пригласить эксперта
Ответы на вопрос 2
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
При авторизации пишите id пользователя в сессию.
При комментировании крепите id пользователя к комменту.
При удалении берете id пользователя из сессии и сверяете его с id пользователя из коммента.
Если совпадают - удаляете коммент.
Ответ написан
elevenelven
@elevenelven
Php Dev @ Amadeus
Не берите данные об UserID из того что предоставляет пользователь.

Берите из сессии или из объекта User (смотря какой у вас фреймворк, или CMS, или самописный движок)

if( $comment->getUserId() === $_SESSION['user']['id'] ){
   //doDelete
}else{
  Logger::log('Fraud attempt');
}


Хотя по формулировке вопроса я чувствую у вас нет привязки комментария к ID пользователя?
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы