Проверка прав пользователя

nefone

Новичок
Есть сайт, где пользователи могут создавать записи, а дальше редактировать их или удалять.
Форма удаления проста:
PHP:
<form method="POST">
<!-- разные поля -->
<input type="hidden" name="object" value="1">
<button type="submit">Удалить</button>
</form>
На бэкенде код, который проверять авторизован пользователь и если да, то удаляет запись:
PHP:
if (!empty($_SESSION['user_name']) { // вся проверка на то авторизован пользователь или нет.
   deleteObj($_POST['object']);  //удаляем из базы запись с id из нашей формы
} else {
   exit('Авторизуйся');
}
Получается банально поменяв в html значения скрытого поля, мы можем удалять любые записи, которые создал не наш пользователь.
Как лучше защититься от этого?
 

ksnk

прохожий
!empty($_SESSION['user_name']) - это, обычно, означает что пользователь зарегистрирован на сайте, о чем есть вот эта вот запись.
Зарегистрированный пользователь, вероятно, имеет право что-то там удалять...
Каким образом изменение html может привести к появлению записи в сессии?
 

AnrDaemon

Продвинутый новичок
Наличие регистрации не даёт пользователю прав распоряжаться не принадлежащим ему контентом.

PHP:
if($this->security->aclCheck($post, $user, "postDelete"))
{
 // Delete post.
}
 

nefone

Новичок
!empty($_SESSION['user_name']) - это, обычно, означает что пользователь зарегистрирован на сайте
Авторизирован.

Каким образом изменение html может привести к появлению записи в сессии?
Сессии может новые и не появятся, а вот из базы данных, записи удалятся.

PHP:
if($this->security->aclCheck($post, $user, "postDelete"))
{
 // Delete post.
}
В aclCheck() cмотрим у объекта записи ($post), является ли объект пользователя($user) ее владельцем?
 

AnrDaemon

Продвинутый новичок
А это уже к вам вопрос, по каким критериям вы определяете, что субъект имеет право совершать над объектом действие.
 
Сверху