PHP → Фильтрация входных данных в PHP
Фильтрация входных данных — одна из самых важных вещей, которой надо уделять внимание при разработке веб-сайта.
Опытным программистам это известно, а новички пусть запомнят одну очень важную вещь:
Данным, полученным от пользователя, доверять нельзя.
Что это значит? А это значит то, что если нам нужно, чтобы пользователь ввел число, это совсем не означает, что он введет именно число. Он может ввести что угодно. И поэтому нам необходимо проверить корректность введенных пользователем данных и оградить себя от возможных вследствие этого ошибок и улучшить безопасность наших скриптов.
Обычно для этого пользуются регулярными выражениями, но начиная с версии 5.2.0, в PHP есть специальные функции, которые выполняют эту работу.
Данным, полученным от пользователя, доверять нельзя.
Что это значит? А это значит то, что если нам нужно, чтобы пользователь ввел число, это совсем не означает, что он введет именно число. Он может ввести что угодно. И поэтому нам необходимо проверить корректность введенных пользователем данных и оградить себя от возможных вследствие этого ошибок и улучшить безопасность наших скриптов.
Обычно для этого пользуются регулярными выражениями, но начиная с версии 5.2.0, в PHP есть специальные функции, которые выполняют эту работу.
PHP → Дыры в большинстве preg_match фильтров
Мне часто приходится разбираться в чужих скриптах. Много этих скриптов содержит регулярные выражения, и я заметил, что большинтсво регулярных выражений в этих скриптах написаны с ошибками.
Большинство PHP-разработчиков используют символы ^ и $ в своих регулярных выражениях, до конца не понимая что они получают в итоге. Можно встретить очень много фильтров наподобие такого:
<?php
$clean = array();
if (preg_match("/^[0-9]+:[X-Z]+$/", $_GET['var'])) {
$clean['var'] = $_GET['var'];
}
?>
Довольно распространенный способ фильтрации входных данных, не так ли?
