@Dreaded

Нужно ли как-то обрабатывать данные из GET запросов?

В данный момент изучаю PHP, и делаю учебный проект. И вот я задумался нужно ли как то обрабатывать данные которые я получаю от пользователя в виде GET запроса?
Банальный пример: если я в GET запросе пользователь введет вместо числового значения "?id=" другие данные, может ли это привести к XSS атаке ? Нужно ли делать проверку этих данных? И если да, то как?
  • Вопрос задан
  • 204 просмотра
Пригласить эксперта
Ответы на вопрос 3
OnYourLips
@OnYourLips
Никак не нужно заранее обрабатывать эти данные.

Нужно по месту применения этих данных их просто правильно применять. И в зависимости от этого применения - по-разному.
Ответ написан
@ipokos
нужно ли как то обрабатывать данные которые я получаю от пользователя в виде GET запроса

Да. и POST тоже. И вообще все что может отправить или сделать пользователь нужно проверять.

И если да, то как?

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

Что именно проверять, зависит от того что ждете.
если ждете id и это может быть только число, проверяете на число или приводите к нему
... и т.п.
Очищать от мусора как вариант так
trim(stripslashes(htmlspecialchars( $yourVarible )));
Ответ написан
Надо ли что-то делать с входными данными зависит от того, что с ними дальше делаете.

Вставляете прямо в сборку строки SQL-запроса? (НЕ надо так делать!)
Показываете пользователю в теле страницы? (Надо фильтровать)

Есть готовые функции для валидации и фильтрации входных данных:

filter_input()

Например:
$query = filter_input(
  INPUT_GET,
  'q',
  FILTER_SANITIZE_STRING,
  FILTER_FLAG_STRIP_LOW | FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_STRIP_BACKTICK
);


См. подробнее Очищающие фильтры.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
ICONIC Москва
от 180 000 до 300 000 руб.
от 90 000 до 140 000 руб.
Aitarget Москва
от 100 000 руб.