Проверка корректности ввода через Web

Задача
После извлечения параметров, полученных сценарием, разумно проверить их корректность.

Решение
Обработка ввода через Web – это одна из разновидностей импорта данных, поэтому после извлечения входных параметров вы можете проверить их корректность, используя приемы.

Обсуждение
Одним из этапов обработки формы является извлечение ввода, полученного при отправке пользователем формы. Ввод также можно получить в виде параметров, указанных в конце URL. Вне зависимости от того, из какого источника получены входные данные, разумно проверить их перед сохранением в базе данных.

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

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


Поэтому следует быть предусмотрительным и выполнить проверку корректности ввода через Web перед его использованием для формирования запросов к базе данных.

Предварительная проверка нужна не только для борьбы со злоумышленниками. Если вы просите заполнить поле, а пользователь забывает это сделать, нужно напомнить пользователю о необходимости ввода значения. Можно использовать простейшую проверку типа «Указан ли параметр?», а можно и что-нибудь посложнее. Типичными примерами операций определения корректности данных являются:

• Проверка формата содержимого, то есть получение уверенности в том, что значение выглядит как целое число или дата. При этом может потребоваться преобразование формата для обработки в MySQL (например, преобразование даты MM/DD/YY в формат ISO).

• Определение того, входит ли значение в допустимое множество. Возможно, значение должно присутствовать в определении столбца ENUM или SET или содержаться в справочной таблице.

• Удаление посторонних символов, таких как пробелы или дефисы, из телефонных номеров или номеров кредитных карт.

Некоторые из этих операций имеют мало общего с MySQL, если не считать того, что вы хотите, чтобы значения соответствовали типам столбцов, в которых их предполагается хранить или с которыми они будут сравниваться.

Например, если собираетесь хранить значение в столбце типа INT, то можете сначала убедиться в том, что оно целое (используем Perl):

$val =~ /^\d+$/
or die "Hey! '" .


escapeHTML ($val) . "' is not an integer!\n";

Некоторые же проверки корректности тесно связаны с MySQL. Если значение поля будет храниться в столбце ENUM, вы можете убедиться в том, что значение входит в множество разрешенных значений столбца перечислимого типа, проверив определение столбца при помощи SHOW COLUMNS.

Я упомянул несколько видов проверки корректности ввода через Web, которые вы можете захотеть провести, и больше не буду об этом говорить. Эти, а также другие способы проверки корректности описаны в главе 10, которая ориентирована в основном на проверку пакетного ввода, но приведенные там методы работают и для веб-программирования. Ведь, по сути дела, обработка форм и параметров URL – это не что иное, как выполнение операции импорта данных.

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Ведение журнала Apache с помощью MySQL
Выполнение поиска и получение результатов
Журнал доступа к веб-странице
Загрузка в форму записи базы данных
Использование ввода через Web для формирования запросов