Сведения о вопросе

Математик

09:40, 7th August, 2020

Теги

php   ajax   authentication    

Только принимать определенные ajax запросы от пользователей, прошедших проверку подлинности

Просмотров: 451   Ответов: 2

Как лучше всего убедиться, что определенные вызовы ajax на определенные страницы принимаются только от аутентифицированных пользователей?

Например:

Допустим, у меня есть главная страница под названием blog.php (я знаю, творчество изобилует). Предположим также, что существует страница с именем delete.php , которая ищет параметр post_id , а затем удаляет некоторую запись из базы данных.

В этом очень надуманном примере есть некоторый механизм на blog.php, который отправляет запрос через ajax к delete.php, чтобы удалить запись.

Теперь этот механизм будет доступен только аутентифицированным пользователям на blog.php. Но что мешает кому-то просто позвонить delete.php с кучей случайных чисел и удалить все на сайте?

Я сделал быстрый тест, где я установил переменную сеанса в blog.php, а затем сделал вызов ajax в delete.php, чтобы вернуться, если переменная сеанса была установлена или нет (это не было) .

Каков общепринятый способ справиться с такими вещами?


OK. Должно быть, я сошел с ума, когда впервые попробовал это сделать.

Я просто сделал еще один тест, как тот, который я описал выше, и он работал отлично.



  Сведения об ответе

P_S_S

23:30, 23rd August, 2020

Вы были правы, пытаясь использовать переменные сеанса. После того, как ваш пользователь аутентифицируется, вы должны сохранить эту информацию в своем сеансе, чтобы каждый последующий просмотр страницы видел это. Убедитесь, что вы вызываете session_start() на обеих страницах (blog.php и delete.php) перед обращением к $_SESSION. также убедитесь, что у вас включены файлы cookie-а если нет, то вы должны передать дополнительный параметр в строке запроса, обычно PHPSESSID=< session_id() >.


  Сведения об ответе

lourence

20:56, 27th August, 2020

Не рекомендуется полагаться на сеансы проверки подлинности без выполнения дополнительных действий. Читайте дальше .


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться