Регулярные выражения и sql инъекции

Discussion in 'PHP' started by Satell, 17 Sep 2007.

  1. Satell

    Satell Elder - Старейшина

    Joined:
    13 Jan 2007
    Messages:
    91
    Likes Received:
    5
    Reputations:
    1
    1)
    $arr = array("Gaz","Gazeta","gazirovanniy","glazirovanniy","Gazenvagen","asdfgazasdfh");
    $reg="/.?gaz.?/i";

    for($i=0; $i<count($arr); $i++)
    {
    if (preg_match($reg, $arr[$i])) {
    echo $arr[$i];
    }
    }

    почему такое регулярное выражение $reg="/.?gaz.?/i"; выводит слова Gaz, Gazeta, Gazenvagen, asdfgazasdfh,
    хотя должно выводить только Gaz?! ведь .? это 0 или 1 символ

    2) как вставить точки перед знаками вопроса в такой строчке $reg="/?gaz?/i";
    3)
    какой sql инъекцией можно "пробить" такой код?
    $login = $_REQUEST['login'];
    $password = $_REQUEST['password'];
    $res = mysql_query('SELECT id FROM users
    WHERE login="'.$login.'" AND password="'.$password.'"');
    list($user_id) = mysql_fetch_array($res);
    session_start();
    $_SESSION['authorized'] = isset($user_id);
     
  2. Goudini

    Goudini Elder - Старейшина

    Joined:
    7 Jun 2006
    Messages:
    132
    Likes Received:
    134
    Reputations:
    91
    3)
    " or 1=1/*
    admin"/*

    автору ещё не надоело создавать на разных форумах одни и те же вопросы по php?
     
  3. Underwit

    Underwit Banned

    Joined:
    6 Oct 2006
    Messages:
    191
    Likes Received:
    137
    Reputations:
    16
    2) $reg="/\.?gaz\.?/i";
     
  4. n1†R0x

    n1†R0x Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    728
    Likes Received:
    376
    Reputations:
    235
    По поводу третьего: банальная скуля, никакой фильтрации, юзерские данные напрямую идут в запрос. Причем использование $_REQUEST-массива позволяет сделать ЭТО нам аж тремя способами: гет-, пост- и кукис-запрос. Это ведь глупо, как вы не понимаете.

    ru.php.net:
    mysql_real_escape_string()
    mysql_escape_string()

    RTFM
     
  5. Satell

    Satell Elder - Старейшина

    Joined:
    13 Jan 2007
    Messages:
    91
    Likes Received:
    5
    Reputations:
    1
    сенкс, я имею ввиду юзер вводит в форму поиска текст шаблон к примеру ?gaz?, а как из него построить строку регулярного выражения,
    т.е. ф-я какая-нибудь которая вставляет символ в середину строки есть?
     
    1 person likes this.