3 правила обработки данных, введенных пользователем PHP (sanitize user input)

Привет друг!

В этой заметке хочу рассказать тебе 3 Важнейших Правила Нормализации Значений в PHP (англ. sanitize user input), полученных от пользователя. Я сам очень часто обращаюсь к этой заметке, если забываю об этих базовых правилах. Каждый PHP-разработчик должен знать эти 3 функции, когда их нужно применять. И самое главное - применять их!

В PHP нет встроенных функций фильтрации/обработки данных, введенных пользователем. Функция magic_quotes, которая должна была выполнять некоторую обработку, была помечена к удалению в версии PHP 5.3.0, и удалена с версии PHP 5.4.0.

Поэтому, чтобы защитить свои приложения и себя от возможных проблем, надо руководствоваться следующим простым правилом (работает для любого языка):

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

Например, если ты используешь строку, полученную "со стороны", в строке SQL-запроса, то используй специальную функцию для этого mysql_real_escape_string() (с версии PHP 5.5.0 -> mysqli_real_escape_string или PDO->quote).

Или другой пример, если в твоем приложении обрабатывается строка, которая содержит HTML-разметку, то нужно обязательно использовать функцию htmlspecialchars().

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

И так далее...

обработка данных которые ввел пользователь PHP

Единственный случай, когда тебе надо как-то фильтровать данные, это когда твое приложение получает какие-то заранее отформатированные данные. То есть, если ты планируешь разрешать своим пользователям публиковать HTML-код на страницах твоего сайта. Но в любом случае, лучше избегать таких ситуаций, потому что, как бы ты ни обрабатывал данные, это всегда будет оставаться потенциальной брешью в защите приложения.

Успехов вам в создании безопасных приложений!

Богдан Григорук

[ Прочитайте комменты ниже или напишите свой... ]

Ищете хостинг для своего сайта? Могу порекомендовать свой (нажмите здесь)

Комментариев пока нет.