Сегодня мы рассмотрим вопросы связанные с обеспечением безопасности при обработке пользовательских данных.Ведь самое меньшее что может произойти - это то что пользователь может просто ввести огромное количество беспорядочных символов,а в худшем в поле для ввода может выть введен какой либо код (например PHP-код) который не позволит правильно работать вашему скрипту.
Все наши "опыты" мы будем производить на примере 2-х файлов
форма для ввода данных с текстовым полем и кнопкой отправки(index.htm)
скрипт обработки вводимых данных (f.php)
Рассмотрим формy для ввода данных с текстовым полем и кнопкой отправки(index.htm)
Как видите-это обычная форма для ввода данных,я думаю нет необходимости рассатривать ее подробно,замечу только, что параметр action="f.php" передает введенные данные в наш файл обработки f.php
Cкрипт обработки вводимых данных (f.php)
<?
.
.
?>
Скрипт очень маленький и все что мы будем делать - это менять его содержимое
В дальнейшем вы сможете применить полученные знания для того, чтобы "обезопасить" себя при работе таких программ,как, гостевая, форма для отправки почты и др. программы где присутствуем поле для ввода.
Самое первое что нужно сделать,чтобы ограничить доступ к введенным данным от посторонних глаз,это использование метода "POST" в форме для отправки,т.к. при применении метода "GET" все введенные данные можно увидеть в адресной строке браузера...
Рассмотрим скрипт который количество вводимых символов:
<?
$mail=substr($mail,0,10);
echo"$mail";
?>
Данный код ограничивает длинну вводимой строки до 10 символов(к примеру при вводе логина) ,за это отвечае функция substr(,,,,,,)
$mail=substr($mail,0,10) - в данном случае выводится символы с 0 по 10
Рассмотрим скрипт который позволяет вводить HTML и другой код без "последствий":
<?
$mail=htmlspecialchars($mail);
echo"$mail";
?>
$mail=htmlspecialchars($mail); данная функция делает так,что если в форму будет введен какой либо код (html или php к примеру) он нормально отобразится,но выполняться не будет.
Рассмотрим метод удаления пробелов:
<?
$mail= trim($mail);
echo"$mail";
?>
Бывает так,что в поле для ввода не должно содержать пробелов,данный код удаляет пробелы спереди и в конце строки
В прошлой рассылке мы рассотрели применение регулярных выражений при проверке вводимых данных.
Сейчас рассотрим пример который контролирует ввод корректного e-mail.
эта функция проверяет соответствие вводимых данных,регулярному выражению
Рассмотрим выражение поднобнее:
Выражение состоит из 3-х составляющих:до знака @, после знака@ и проверка расширения домена
[0-9a-z_]+
здесь осуществляется проверка данных до знака @
Разрешен ввод цифр от 0 до 9 ,букв от a до z и знака нижнего подчеркивания _
знак + означает что это выражение применяется один и более раз
@[0-9a-z_^\.]+
это выражение означает что вводимые данные должны состоять из знака @ за которым должны находиться символы от 0 до 9 ,букв от a до z и знака нижнего подчеркивания _ и точки . И все это один и более раз,на что указывает знак +
\.[a-z]{2,3}
данное выражение означает что за знаком точки . должны следовать от 2 до 3 знаков латинского алфавита
/i
такой знак в конце означает что все выражение не чувствительно к регистру
Используя данное выражение вы можете быть уверены,что пользователь точно введет корректный адрес электронной почты!
Это всего лишь одно из многих выражений которые вам могут пригодиться,более подробно вы можете прочесть в справочнике PHP который находится здесь: http://wzone.net.ru/books.php
на сайте появился форум,заходите,обсуждайте интересующие вопросы
появился большой раздел "СЕТИ",где рассатриваются вопросы связанные с компьютерными сетями.Выложены статьи "Топология сетей" и "Пошаговое руководство по объединению компьютеров в сеть",все статьи снабжены подробными иллюстрациями
и как всегда пополняются коллекция скриптов
появились новые статьи в разделе СЕТИ,рассматриваются среды передачи информации...