Когда и как необходимо проверять данные на php?
- Данные проверяем на существования вначале.
- Затем проверяем данные которые имеют "белые списки" на соответствие им.
- Затем числовые данные проверяем на соответствие типов.
- Затем проверяем размерность числовых данных.
- Затем проверяем текстовые данные на размерность (если необходимо).
- Затем проверяем текстовые данные на наличие в них опасных слов (script|location|cookie|SELECT|UNION|UPDATE|exec|INSERT|tmp и т.д.).
- Затем проверяем данные на количество знаков "%". Если знаков % больше 10, то возможно это инъекция через метасимволы.
- Затем очищаем данные от крайних пробелов.
- Затем проверяем данные на пустоту (''). Если необходимо присваиваем значение по умолчанию.
- Затем проверки согласно алгоритмам.
- Затем вставка в БД с экранированием или "подготовленными предложениями" (PDO).
Теоретически такую защиту можно обойти, но надо быть гением с даром предвидения.
Это то понятно, что данные не используются без проверки... что будет, если я сначала проверю их наличие а потом отфильтрую?!