AJAX-запрос к файлу PHP, безопасность и доступность файла PHP - PullRequest
0 голосов
/ 17 января 2019

У меня есть небольшой AJAX-скрипт, который передает переменные GET в принимающий файл PHP, назовем его AJAX_RECEIVER.php.

Этот файл выполняет запрос к базе данных и на основе пар GET key-value возвращаетresponseText, который затем подается в элемент HTML.

У меня есть несколько вопросов

1), как предотвратить случайный доступ кого-либо к этому файлу AJAX_RECEIVER.php, введя его в URL-адресе браузера?

2) Как я могу гарантировать, что только «действительный» вошедший в систему пользователь сможет получить значимый ответ от AJAX_RECEIVER.php?file

3) Как передать пары ключ-значение в этот файл AJAX_RECEIVER.php с помощью POST?

4) Полагаю, я мог бы установить значения переменной сеанса в нечто такое, что означает, что действительный пользователь вошел в систему, и передать его в AJAX_RECEIVER.php с помощью POST, который выполняет проверку и возвращает что-то законноетолько если это действительный пользователь, я просто немного не уверен, что это лучший способ сделать это ... или есть какой-то другой способ?

Извините, если мой вопрос звучит несколько повторяющимся или может иметьответили в другом месте, любая помощь будет принята с благодарностью.PS Я не хочу использовать JQUERY (вполне доволен Javascript, и я не хочу тратить еще несколько дней на изучение другой вещи, если я могу сделать то же самое с простым Javascript)

Ответы [ 2 ]

0 голосов
/ 17 января 2019

как предотвратить случайный доступ кого-либо к этому файлу AJAX_RECEIVER.php, введя его в URL браузера?

Вы не можете.

Как я могу гарантировать, что только «действительный» вошедший в систему пользователь сможет получить значимый ответ от AJAX_RECEIVER.php?

Таким же образом вы гарантируете, что только действительный, вошедший в систему пользователь сможет получить значимый ответ от любой из ваших других программ PHP. (Предположительно, вы используете какую-то сессионную аутентификацию, используйте ее).

Как передать пары ключ-значение в этот файл AJAX_RECEIVER.php с помощью POST?

Есть много способов. Передача FormData объекта fetch, вероятно, самая простая.

var formData = new FormData(document.querySelector("form"));
fetch('/AJAX_RECEIVER.php', {
  method: 'POST',
  body: formData
});

Полагаю, я мог бы установить значения переменной сеанса так, чтобы означает, что в систему вошел действительный пользователь,

Так работает большинство систем входа в систему

и передайте его в AJAX_RECEIVER.php, используя POST

Просто продолжайте использовать тот же файл cookie сеанса для передачи этих данных. Не копируйте его в текст почтового запроса. Это позволит легко подделать зарегистрированный статус.

0 голосов
/ 17 января 2019

вы можете использовать токен CSRF для решения ваших проблем. например этот класс: https://github.com/gilbitron/EasyCSRF

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