Всем привет! Подскажите профи, в чем недостаток это-го скрипта авторизации? Есть ли уязвимые места или еще чета? Можно ли считать это скрипт безопасным? Писал сам. Код (Text): <?php session_start(); if(isset($_GET['exit'])) { session_unset(); session_destroy(); header("location: x.php"); exit; } if(!isset($_POST['loginame'],$_POST['password'])) { echo "<form method=post> Логин: <input type=text name='loginame'><br> Пароль: <input type=password name='password'><br> <input type=submit value=' Вход '> </form> "; } else { $conn=mysql_connect("localhost","root",""); mysql_select_db("silkreports"); $res=mysql_query("select username, password from sr_users where username='".$_POST['loginame']."'"); if(mysql_num_rows($res)!=0) { while($row=mysql_fetch_array($res,MYSQL_ASSOC)) { $_SESSION['username']=$row['username']; $_SESSION['password']=$row['password']; } if(($_POST['loginame']==$_SESSION['username'])&&(md5($_POST['password'])==$_SESSION['password'])) { echo "Успешно авторизирован!!!"; echo "<br><a href=x.php?exit>Завершить работу</a>"; } else { session_unset(); session_destroy(); header("location: x.php"); exit; } } else { session_unset(); session_destroy(); header("location: x.php"); exit; } mysql_free_result($res); mysql_close($conn); } ?>
Ну чесно сказать пока не решал нафига, но увере где-то пригодица, не могу пока сказать где... ну можно и так Код (Text): ... while($row=mysql_fetch_array($res,MYSQL_ASSOC)) { $user=$row['username']; $pswd=$row['password']; } if(($_POST['loginame']==$user)&&(md5($_POST['password'])==$pswd)) { echo "Успешно авторизирован!!!"; echo "<br><a href=x.php?exit>Завершить работу</a>"; } ...
у тебя нет ни одной неуязвимой строки кода, изучай матчасть. Это просто сплошная sql инъекция. код в помойку.
Еще прикинул что забыл вот что... Код (Text): $res=mysql_query("select username, password from sr_users where username='".mysql_escape_string($_POST['loginame'])."'");
Ты считаешь это профессиональным ответом? Или ты таким образом самоутвердился? Бывает... Лялякать все могут, а реально показать в чем проблема, никто не может.
тебе мешает твое нежелание читать нормальные книги, а не ужасные статьи и примеры говнокода. лялякать можно на проверку входных параметров, ты логин на даже на допустимость не проверил. А если тебе пару тысяч запросов отправить, с метровым логином и таким же паролем, сколько твой сервер продержится, писать лень, еще штук 5 багов
Книга "PHP и MySQL. Библия пользователя" - очень полезная книга Хотя читать её от корки до корки я смысла не вижу, но как справочник оч. полезна
Хорошо. Помогите понять, как еще можно боротся с иньекциями, если к примеру я буду использовать: mysql_escape_string(); addslashes(); Что еще нужно сделать чтобы запросы были безопасные?
Есть (на мой взгляд) хорошая функция для обработки переменных, которые потом пойдут в запрос PHP: <?php // Функция экранирования переменных function quote_smart($value) { // если magic_quotes_gpc включена - используем stripslashes if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // Если переменная - число, то экранировать её не нужно // если нет - то окружем её кавычками, и экранируем if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; } //(c) [url=http://ru2.php.net/manual/ru/function.mysql-real-escape-string.php]http://ru2.php.net/manual/ru/function.m ... string.php[/url] ?>