Как обезопасить поле ввода

Тема в разделе "PHP", создана пользователем phillip, 24 окт 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    есть у меня
    PHP:
    <input type="text" name="query" size="30" />
    надо ограничить так, чтобы юзер мог в это поле ввести только адрес сайта, и ничто другое. а то я переживаю что он туда пхп код свой внедрит или еще что-нить зловредное. Как обезопаситься? В безопасности пока не разбирался :)
     
  2. Sanuch

    Sanuch

    Регистр.:
    25 май 2009
    Сообщения:
    207
    Симпатии:
    70
    или с помощью javascript или при проверки отравленых данных проверять при помощи регулярного выражения на соотвествие урлу
     
  3. t0wer

    t0wer BlackHerald

    Регистр.:
    24 июн 2008
    Сообщения:
    731
    Симпатии:
    421
    проверка URL на валидность:
    PHP:
    <? preg_match(/^(http(s)?:\/\/)(([^\/]+\.)+)\w{2,}(\/)?.*$/i”$url); ?>
    можно посложнее провести:
    PHP:
    <?PHP
          
    function check_url($url) {
          if (
    eregi'^[url]http://'[/url], $url)) {
          
    $urlArray parse_url($url);
          if (!
    $urlArray[port]) $urlArray[port] = '80';
          if (!
    $urlArray[path]) $urlArray[path] = '/';
          
    $sock fsockopen($urlArray[host], $urlArray[port], &$errnum, &$errstr);
          if (!
    $sock$res 'DNS';
          else {
          
    $dump .= "GET $urlArray[path] HTTP/1.1\r\n";
          
    $dump .= "Host: $urlArray[host]\r\nConnection: close\r\n";
          
    $dump .= "Connection: close\r\n\r\n";
          
    fputs($sock$dump);
          while (
    $str fgets($sock1024)) {
          if (
    eregi("^http/[0-9]+.[0-9]+ ([0-9]{3}) [a-z ]*"$str))
          
    $res[code] = trim(eregi_replace('^http/[0-9]+.[0-9]+
          ([0-9]{3})
          [a-z ]*'
    "\\1"$str));
          if (
    eregi("^Content-Type: "$str))
          
    $res[contentType] = trim(eregi_replace("^Content-Type: ",
          
    "",
          
    $str));
          }
          
    fclose($sock);
          
    flush();
          return 
    $res[code];
          }
          } else 
    $res "N/A";
          return 
    $res;
          }
          
    ?>
     
    phillip нравится это.
  4. -=Xardas=-

    -=Xardas=-

    Регистр.:
    17 сен 2008
    Сообщения:
    250
    Симпатии:
    58
    Либо так:
    PHP:
    <?php
    $adres 
    "microsoft.com";
    $adres strtolower($adres);
    $adres preg_replace("`^http(s)?\:\/\/([0-9A-Z\.]+)(\/)?.*$`i""\\2"$adres);
    $adres ip2long(gethostbyname($adres));
    if(!empty(
    $adres) and $adres!=-1)
        echo 
    "Адресс валидный";
    else
        echo 
    "Адресс невалидный";
    ?>
     
    phillip нравится это.
Статус темы:
Закрыта.