Прием только определенных запросов AJAX от аутентифицированных пользователей - PullRequest
8 голосов
/ 19 августа 2008

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

Например:

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

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

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

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

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


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

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

Ответы [ 2 ]

7 голосов
/ 19 августа 2008

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

2 голосов
/ 20 августа 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...