Как проверить, как запрашивается веб-ресурс?

#php #web

#php #паутина

Вопрос:

Используя PHP, есть ли способ точно проверить, как запрашивается ресурс веб-сервера, при этом минимизируя пространство для подделки и взлома? Или, проще говоря, как проверить, является ли это щелчком по гиперссылке, прямым URL, отправкой HTML-формы, программным доступом и т. Д.?

Что делать, если используются инструменты, отличные от PHP?

Ответ №1:

Вы не можете сделать это пуленепробиваемым таким образом, но это хорошее начало $_SERVER .

Например, с $_SERVER['REQUEST_METHOD'] помощью вы можете определить, был ли запрос get/post/put/...

Что касается щелчка по ссылке или прямого доступа: $_SERVER['HTTP_REFERER'] может помочь.

Наконец $_SERVER['REQUEST_URI'] , может содержаться некоторая полезная информация, позволяющая определить, был ли скрипт запущен через веб-сервер (например, apache) или консоль.

Пожалуйста, ознакомьтесь с документацией для получения дополнительной информации об этом.

И, как я уже упоминал ранее: здесь вы ни в чем не можете быть уверены, но если вам просто нужна некоторая информация, а не использовать ее по соображениям безопасности, то все в порядке.

Если вы хотите обеспечить безопасность, вам нужно изучить возможности использования .htaccess.

Ответ №2:

Похоже, вы намекаете на атаки с подделкой межсайтовых запросов (CSRF). CSRF-атаки — это когда злоумышленник может вызвать запрос на сайт, который, по-видимому, исходит от законного пользователя (например, «Перевести 500 долларов на счет 1234»).). Эти атаки злоупотребляют доверием, которое веб-сайт имеет у посетителя. Запрос может показаться законным, поскольку он сопровождается сеансовым файлом cookie, который соответствует сеансу аутентификации пользователя.

Чтобы предотвратить атаки CSRF, разработчики обычно добавляют скрытые поля формы, содержащие «токены CSRF». Этот токен отправляется вместе с отправкой формы. Это средство обеспечения законности отправки форм. После отправки токен CSRF проверяется (обычно он сравнивается со значением токена, сохраненным или вычисленным на сервере).

Для получения информации о деталях реализации ознакомьтесь с OWASP . Одно важное замечание заключается в том, чтобы не раскрывать токены в URL-адресе (т. Е. Через запросы GET), поскольку они могут предоставить токены потенциальным злоумышленникам.

Если у вас есть проблемы, помимо CSRF, пожалуйста, не стесняйтесь обновлять свой вопрос, и я был бы рад предоставить дополнительную информацию, более соответствующую вашим потребностям.