Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создать профессиональный web-сайт - легко! выпуск 17


Информационный Канал Subscribe.Ru

Создать профессиональный web-сайт - легко!
или
все о PHP шаг за шагом.

     Сегодня в выпуске (N 17):
10 декабря 2005 года 
     ВНИМАНИЕ !!!
тираж выпуска: 6000 
- От автора (рекомендуется прочитать)
- Статья выпуска "Фильтрация данных в PHP"
        ∙ задать вопрос
- Анекдоты web-мастеру


Сайт рассылки

     На сайте появился квест для веб-мастера: http://wcode.ru/quest/.
     От автора (рекомендуется прочитать):
Добрый день, уважаемые подписчики.

     Этот выпуск скорее посвящен скорее сайту рассылке, нежеле самой рассылке и ее тематике. Я настоятельно прошу всех, кто может и не может посмотреть сайт http://wcode.ru/, который за это время сильно изменился. Улучшился движок сайта, форума, переработаны и добавлены новые статьи и уроки в учебниках.

Также появилась ON-LINE игра для веб-мастера, расчитанная на сообразительность и знания и названная в честь этого квестом. Чтобы начать игру, надо пройти очень короткую регистрацию и получить уникальный ID. А затем просто вводить свои логин с паролем, чтобы продолжить игру дальше. Целью игры является нахождение уязвимости на странице, которая сможет вас пропустить на слудующий уровень. Игра получилась неплохая, много хороших отзывов по поводу ее. Поиграйте - не пожалеете.

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

И в завершении хочу сказать, что все еще впереди, скоро произойдет еще ряд обновлений, которые реально будут полезны и интересны многим. По всем вопросам рекламы и работы сайта обращайтесь в службу поддержки или в аську #611686.
     Статья выпуска "Фильтрация данных в PHP":
     Каждый web-мастер должен уметь не только писать скрипты, но и грамотно организовывать защиту своих творений. Одним из важнейших навыков является умение правильно фильтровать всю информацию, поступающую от пользователя. Об этом и пойдет речь в моей статье.

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

<form action="index.php" method="GET">
<input type="text" name="login">
<input type="text" name "pass">
<input type="submit" value="OK">
</form>


После нажатия кнопки "OK" передаст скрипту index.php два значения - $login и $pass. Как их можно отфильтровать? Пример для переменной $login:

if($login)
{
$login = htmlspecialchars((stripslashes($login)), ENT_QUOTES);
$login = str_replace("/","",$login);
$login = str_replace(".","",$login);
$login = str_replace("`","",$login);
}
else
{
echo "Логин не введен!";
}


В первой строке мы проверяем существование переменной $login, если она существует - идем дальше, если нет - выводим сообщение об ошибке. Затем с помощью функции htmlspecialchars заменяем в этой переменной спецсимволы на их HTML мнемоники. То есть знак '<' меняется на '&lt;', '&' меняется на '&amp;' и т.д. Функция stripslashes вырезает знак обратного слеша '\'. Далее с помощью str_replace вырезаем знак прямого слеша, точку (иногда бывает полезно) и обратную кавычку.

Если вы знакомы с регулярными выражениями, то предыдущий пример можно записать гораздо короче:

if($login)
{
if (preg_match("/[0-9a-z_]/i", $login))
{
// … действия над логином …
}
else
{
echo "Логин введен неверно!";
}
}
else
{
echo "Логин не введен!";
}


Этот фрагмент кода будет проверять введенный логин на соответствие регулярному выражению '/[0-9a-z_]/i', которое означает: все цифры + все латинские буквы в любом регистре + знак подчеркивания. Если логин содержит другие символы, то будет показано сообщение об ошибке.

Аналогично фильтруются переменные, получаемые скриптом через URL. В движках сайтов можно встретить что-то вроде таких ссылок:

http://www.site.com/index.php?module=news

Если не фильтровать переменную $module (или $_GET['module'], если register_globals отключен), то над сайтом могут вытворяться не очень хорошие вещи, вроде XSS. Нужно применять первый приведенный мной скрипт-чистильщик, разумеется, убрав сообщения об ошибках.

Следующее, на чем бы я хотел остановиться - это фильтрация кукисов. Думаю, что даже если вы начинающий программист, то с "плюшками" вы сталкивались, а насчет их проверки даже не задумывались. Зря! Если вы используете SQL-базы данных, то отсутствие проверки кукисов может привести к использованию хакерами SQL-injection. Так как в кукисах, в основном, мы используем определенный тип данных, например, только числа, то проверку данных можно проводить с помощью все тех же регулярных выражений. Допустим, у нас есть кукис "id", в котором хранятся числовые данные. Его проверка:

if($_COOKIE['id'])
{
if (preg_match("/[0-9]/", $_COOKIE['id'])
{
// … действия над кукисом …
}
else
{
echo "Хм, странный кукис. Не пойдет!";
}
}


В сети есть огромное количество документации посвященной взлому сайтов,в частности, там показаны различные случаи использования XSS и приемы обхода фильтрации. Но мы то с вами уже умеем защищаться от непрошенных гостей ;)
     Анекдоты web-мастеру:
Хотите чтобы на вашем сайте был всегда свежий анекдот, что то вроде этого:

Идет старушка и по улице и видит - несколько человек бьют морду одному, решила заступиться:
- Что же вы делаете, живому человеку кулаками по лицу колотите.
- Уйди, бабка, мы спамера поймали!
- Так что же вы его руками-то? Ногами надо, ногами!

Прейдя на ваш сайт посетитель будет видеть всегда новый анекдот. А как известно анекдот расслабляет, а за счет этого формирует положительные эмоции о вашем сайте. Для того, чтобы разместить его, от вас не потребуется ни какой платы. Для этого вам всего лишь нужно разместить в нужном вам месте следующий код:

Данный код автоматически без вас сгенерирует уже готовый анекдот. Вы можете его размещать где угодно.

Рассылку подготовил, Ястребов Сергей.
Сайт рассылки http://wcode.ru/.
...наверх...

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: inet.webbuild.aboutphp
Архив рассылки
Отписаться
Вспомнить пароль

В избранное