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

PHP в примерах, просто о сложном


Php в примерах

Рассылка "PHP в приммерах"

Выпуск №6
Тема выпуска: Безопастность
Пример выпуска: Регистрация на сайте

   

 

Написать
    От автора
 

    Как видите, я совершенно изменил дизайн рассылки. Ваше мнение о новом дизайне и вопросы присылайте на мыло рассылки Написать (или жмите на рисунок слева).

    Снова повторяю, что у рассылки есть  форум поддержки, где вы можете задать свой вопрос.Перейти
    Кстати сейчас я выбираю хостинг и домен, для перемещения форума. Так что к  концу декабря, будет новый домен.
    На форуме есть опрос-
    Что бы вы хотели видеть на сайте, после переезда сайта на платный хостинг?
    Для участия в опросе перейдите по этой ссылке

 

 

Написать
    Что нового сегодня?
 

    Сегодня мы рассмотрим “Безопасное программирование”.А если говорить точнее, то рассмотрим некоторые способы проверки пользовательской информации. И сделаем скрипт для авторитизации и регистрации посетителей.

 

 

Написать
    По теме
 


    -Представление html скриптов, как есть
    К примеру у нас есть форма для ввода имени пользователя

      <form action="proverka.php" method="POST">
      <input tyre="text" name="name">
      <input type="submit" name="send" value="Послать">
      </form>  

    Чтобы испортить вам дизайн хакеру достаточно вставить в поле "name",любой код таблицы.К примеру такой:

      <td width="10000"  height="10000">
      А тут может еще что-нить ниписать
      </td>

    В результате чего ваша страница,где выводится сохраненная информация,увеличится в 10 раз.Согласитесь,что не очень приятно зрелище.Чтобы избежать этого надо воспользоватся функцией   htmlspecialchars. Она заменяет некторые символы на специальные так к примеру:
    <table> изменится на &lt table &gt
    Что и позволит вывести на экран
    <table>.
    Применяется она так
     $name= htmlspecialchars($name);

     


     Чей сервер???
    Допустим поля формы, где пользователь вводит ник и email, ограничены чем то вроде
    <input type=text name=nick maxlength=10>

    Злоумышленник может скачать документ с формой ввода и подправить параметр maxlength. Чтобы этого не произошло, установим где-нибудь в самом начале скрипта, обрабатывающего данные, проверку переменной окружения web-сервера HTTP-REFERER (проверив с родного ли хоста пришли данные).

      $referer=getenv("HTTP_REFERER");
      if (!ereg("^http://www.ваш_сервер.ru")) {
      print "Хакерам тут не место";
      exit; }

     

    Тонкости дизайна
    Еще маленькая тонкость. Подумайте над тем, что будет, если пользователь в сообщение вставит очень длинную строку без разрывов типа ААААА *256 ААААААА, страшного ничего конечно не произойдет, но вот дизайн той же гостевой или форума разъедется по швам основательно. Что можно сделать в этом случае? Просто разделите данные из переменной пробелами,например по 50 символов, вряд ли вы умудритесь составить нормальное слово длиннее 50 символов.

     

      function bigword($string) 
      {
       $s=str_replace("\\\"","\"",$string);
        return " ".wordwrap($message,51," ",1)." ";
         }
       

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


     

 

 

Написать
    Прежде чем смотреть архив

 

    Чтобы добавить строку в конец другой строки надо сделать так
    $str="Привет";
    $str.="Ваня";
    echo $str1;


    Выведет Привет Ваня
    Если не видно,то мы добились этого благодаря поставленной точки перед знаком равно во второй строке,именно она и добавляет строку к строку.

    empty
    Данный оператор,означает отсутствие какой либо переменной.Давайте расмотрим пример:
    if (empty($name)

    print "Имени нету";
    }

    Так как мы не создали переменную $name,то выведет сообщение.А вот если бы мы указали перед условием $name="Коля",то ничего бы не произошло.

    А если переменная существует?Как проверить?
    Эту работу выполняет "!",который означает "не".Если скрестить "empty" и "!",то :
    $name="Никто";
    if (!empty($name)

    print "Имя есть";
    }

    Как видите если переменная существует то выведет сообщение.

     

 

Написать
    Практикум

 

    Наш скрипт будет состоять из 4 основных файлов и 2 побочных.
    1) registration.php  - файл для формы регистрации
    2) cod_reg.php - обработчик введенных данных при регистрации
    3) login.php - форма для входа
    4) cod.php - обработчик,вводимых даных при входе
    5) user/users.php  - фаил,где хранятся пароли и логины
    6) noogin.php  -код include.php вставьте во все страницы которые будут использовать скрипт.

      В скрипте все понятно,все это вы должны знать.Скрипт прикреплен к сообщению,если вам будет что-то не понятно,то просим на форум.

     

     


В избранное