Здраствуйте опять, здесь я прочитал про SQL-injection, написал такой скриптик Авторизации и теперь хотел узнать, есть-ли здесь ошибки, которые может использовать хакер? я не нашол, а может просто плохо понял про SQL-injection. И еще такой вопрос есть ли у вас ссылки где можно подробно(даже очень подробно) с примерами прочитать про SQL-injection HTML: <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST"> <table cellpadding="0" cellspacing="0" border="1"> <tr> <td align="center">Имя user <input type="text" name="user"></td> </tr> <tr> <td align="center">Пароль <input type="text" name="pas"></td> </tr> <tr> <td align="center"><input type="submit" name="ОК"></td> </tr> </table> </form> PHP: <?php $mysql = mysql_connect('localhost','root'); if(!$mysql){ exit("Нет соеденение с базой"); } $mysql = mysql_select_db('test'); if(!$mysql){ exit("Нет соеденение с базой"); } $user = $_POST['user']; $pas = $_POST['pas']; $query = mysql_query("SELECT * FROM user WHERE username = '$user' and passwd = '$pas'"); $result = mysql_num_rows($query); if($result > 0){ echo "Вы прошли проверку"; } else { echo "Не прошло"; } ?>
можете описать как именно можно возпользоватся(если не долго надо писать)? Нормально работает, не проходит Вот короче сайтик куда я кинул http://internetrabota.jino-net.ru/index.php Логин - test Пароль - 159753 еще пробывал подставить под логин и пароль такие данные 1" OR "1" = "1 тоже не проходит, А правильные данные вписую проходит
Если Вы услышали про инъекции, то бегите читать море статей, которые про это рассказывают. И нечего напрягать людей и спрашивать на форуме то, чего читать не хотите.
Спасибо теперь команда 1' OR '1' = '1 проходит теперь буду разбиратся дальше. Чем я лично вас напрягаю? Я никого не заставляю насильно отвечать, кто хочет тот и отвечает.
Klin возьми какой-нить класс для работы с БД и шаблонизатор. Вот те в подарок 2 очень полезные функции http://php.ru/forum/viewtopic.php?p=101105#101105
Читайте КМБ =)) http://www.inattack.ru/group_article/45.html Зы. Надо у тебя в подписи будет ссылку закрепить... Зыы. Всякую бяку типа кавычек лучше заменять на html представления...
Mr.M.I.T. htmlspecialchars кажись не обрабатывает косую кавычку ` А че закреплять? http://php.ru/forum/viewtopic.php?p=101105#101105 чтоли?
mysql_escape_string и ей подобные, вот всё что нужно для того, чтобы избежать SQL инъекции любого рода.
Зачем имя пользователя и пароль обрабатывать в htmlchars??? Есть специальная функция mysql_escape_string() которая экранирует все нужные символы.
Спасибо, буду пробовать Я уже прочитал все статьи много полезного подчерпнул, дело в том что в настройках было включено magic_quotes_gpc, я пытался подставить запрос 1' OR '1' = '1 он не обрабатывал запрос, когда в скрипте подставлял все срабатывал, я просто не догнал почему не обрабатывается с сайта. поэтому и задал вопрос. За ссылку отдельное спасибо, очень интересные статья для новичка. Всем остальным тоже спасибо за ответы P.S. Надо самому установить php и mysql чтобы хоть немного раздублится в настройках
я ей не доверяю, давно давно видел статью как её обходят, забыл как, ссылку на статью тоже забыл, но недоверие осталось...
объясните мне, чем addslashes отличается от mysql_escape_string ? Mr.M.I.T., а вот действительно, нафуя это преобразовывать всякое дерьмо в логине в htmlspecialchars?
еще стоит добавить, что при передаче идентфикатора соединения в mysql_real_escape_string он заэкранирует ЛЮБЫЕ символы, требующие экранизации. (в зависимости от кодировки, например) Это единственная 100% правильная функция для экранирования данных, вносимых в базу данных MySQL.
блудный сын, +1, запрос - это запрос, а данные - это данные. Данные действительно не опасны. Превращение данных в запрос (что и есть инъекция) - опасно. Sergey89 Горбунов Олег А какой смысл экранировать символы \r, \n, \0, \x1a и иже с ними? Они же все равно не могут быть признаком конца строки. Экранировать \ и ' (при использовании одинарной кавычки для строк в SQL) - и достаточно. С этим прекрасно (и наверняка быстрее) справляется функция addslashes().