Как фильтровать данные с помощью PHP?

Как выучить PHP Программирование и разработка

В этой статье мы рассмотрим, почему так важно фильтровать все, что встроено в наши приложения. В частности, мы рассмотрим, как проверять и очищать сторонние данные в PHP.

Никогда (никогда!) не доверяйте чужому вводу в своем приложении. Это один из самых важных уроков для любого, кто разрабатывает веб-приложение.

Внешним вводом может быть что угодно — из входных данных $_GETи $_POST формы, некоторых элементов в теле HTTP-запроса или даже некоторых значений в $_SERVERсуперглобальном файле. Файлы cookie, значения сеанса и загруженные и загруженные файлы документов также считаются внешними входными данными.

Каждый раз, когда мы обрабатываем, выводим, включаем или объединяем сторонние данные в наш код, существует потенциальный вектор для злоумышленников для внедрения кода в наше приложение (так называемые атаки путем внедрения ). Из-за этого нам нужно убедиться, что каждый фрагмент посторонних данных правильно отфильтрован, чтобы его можно было безопасно включить в приложение.

Когда дело доходит до фильтрации, есть два основных типа: проверка и очистка.

Проверка

Валидация гарантирует, что иностранный ввод будет таким, каким мы его ожидаем. Например, мы можем ожидать адрес электронной почты, поэтому мы ожидаем что-то с ********@*****.***форматом. Для этого мы можем использовать FILTER_VALIDATE_EMAILфильтр. Или, если мы ожидаем логическое значение, мы можем использовать FILTER_VALIDATE_BOOLфильтр PHP.

Среди наиболее полезных фильтров — FILTER_VALIDATE_BOOL, FILTER_VALIDATE_INTи FILTER_VALIDATE_FLOATдля фильтрации основных типов и FILTER_VALIDATE_EMAILи FILTER_VALIDATE_DOMAINдля фильтрации электронных писем и доменных имен соответственно.

Еще один очень важный фильтр — это фильтр, FILTER_VALIDATE_REGEXPкоторый позволяет нам фильтровать регулярное выражение. С помощью этого фильтра мы можем создавать собственные фильтры, изменяя регулярное выражение, по которому мы фильтруем.

Sanitization

Санитизация — это процесс удаления недопустимых или небезопасных символов из постороннего ввода.

Лучший пример этого — дезинфицировать входные данные базы данных перед их вставкой в ​​необработанный SQL-запрос.

Опять же, некоторые из наиболее полезных фильтров очистки включают фильтры для очистки основных типов, таких как FILTER_SANITIZE_STRING, FILTER_SANITIZE_CHARSи, а FILTER_SANITIZE_INTтакже для очистки URL-адресов и электронных писем.FILTER_SANITIZE_URLFILTER_SANITIZE_EMAIL

filter_var() и filter_input()

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

Применение фильтра осуществляется с помощью функций filter_var()и.filter_input()

Функция filter_var()применяет указанный фильтр к переменной. Он будет принимать значение для фильтрации, применяемый фильтр и необязательный массив параметров. Например, если мы пытаемся проверить адрес электронной почты, мы можем использовать это:

<?php

$email = your.email@sitepoint.com:

if ( filter_var( $email, FILTER_VALIDATE_EMAIL ) ) {
    echo ("This email is valid");
}

Если бы целью было очистить строку, мы могли бы использовать это:

<?php
$string = "<h1>Hello World</h1>";

$sanitized_string = filter_var ( $string, FILTER_SANITIZE_STRING);
echo $sanitized_string;

Функция filter_input()получает сторонний ввод из ввода формы и фильтрует его.

Она работает так же, как и filter_var()функция, но принимает тип входных данных (мы можем выбрать из GET, POST, COOKIE, SERVERили ENV), переменную для фильтрации и фильтр. При желании он также может принимать множество параметров.

Еще раз, если мы хотим проверить, отправляется ли внешняя входная переменная «email» через GETнаше приложение, мы можем использовать это:

<?php

if ( filter_input( INPUT_GET, "email", FILTER_VALIDATE_EMAIL ) ) {
    echo "The email is being sent and is valid.";
}

Заключение

И это основы фильтрации данных в PHP. Для фильтрации посторонних данных могут использоваться и другие методы, например применение регулярных выражений, но методов, которые мы рассмотрели в этой статье, более чем достаточно для большинства случаев использования.

Убедитесь, что вы понимаете разницу между проверкой и очисткой и как использовать функции фильтра. Благодаря этим знаниям ваши PHP-приложения станут более надежными и безопасными!

Читайте также:  Как отправить отказоустойчивый компонент CSS?
Оцените статью
bestprogrammer.ru
Добавить комментарий