![]() |
Регулярные выражения и sql инъекции
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); |
3)
" or 1=1/* admin"/* автору ещё не надоело создавать на разных форумах одни и те же вопросы по php? |
2) $reg="/\.?gaz\.?/i";
|
По поводу третьего: банальная скуля, никакой фильтрации, юзерские данные напрямую идут в запрос. Причем использование $_REQUEST-массива позволяет сделать ЭТО нам аж тремя способами: гет-, пост- и кукис-запрос. Это ведь глупо, как вы не понимаете.
ru.php.net: mysql_real_escape_string() mysql_escape_string() RTFM |
сенкс, я имею ввиду юзер вводит в форму поиска текст шаблон к примеру ?gaz?, а как из него построить строку регулярного выражения,
т.е. ф-я какая-нибудь которая вставляет символ в середину строки есть? |
| Время: 14:31 |