За последние 24 часа нас посетили 18264 программиста и 1606 роботов. Сейчас ищут 872 программиста ...

Есть ли дыры в скрипте

Тема в разделе "Вопросы от блондинок", создана пользователем Klin, 29 июл 2008.

  1. Klin

    Klin Активный пользователь

    С нами с:
    15 май 2008
    Сообщения:
    82
    Симпатии:
    0
    Здраствуйте опять, здесь я прочитал про SQL-injection, написал такой скриптик Авторизации и теперь хотел узнать, есть-ли здесь ошибки, которые может использовать хакер? я не нашол, а может просто плохо понял про SQL-injection. И еще такой вопрос есть ли у вас ссылки где можно подробно(даже очень подробно) с примерами прочитать про SQL-injection

    HTML:
    1. <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="POST">
    2. <table cellpadding="0" cellspacing="0" border="1">
    3. <tr>
    4. <td align="center">Имя user <input type="text" name="user"></td>
    5. </tr>
    6. <tr>
    7. <td align="center">Пароль <input type="text" name="pas"></td>
    8. </tr>
    9. <tr>
    10. <td align="center"><input type="submit" name="ОК"></td>
    11. </tr>
    12. </form>
    PHP:
    1. <?php
    2. $mysql = mysql_connect('localhost','root');
    3. if(!$mysql){
    4.     exit("Нет соеденение с базой");
    5. }
    6. $mysql = mysql_select_db('test');
    7. if(!$mysql){
    8.     exit("Нет соеденение с базой");
    9. }
    10. $user = $_POST['user'];
    11. $pas = $_POST['pas'];
    12. $query = mysql_query("SELECT * FROM user WHERE username = '$user' and passwd = '$pas'");
    13. $result = mysql_num_rows($query);
    14. if($result > 0){
    15.     echo "Вы прошли проверку";
    16. }
    17. else
    18. {
    19.     echo "Не прошло";
    20. }
    21. ?>
     
  2. Ti

    Ti Активный пользователь

    С нами с:
    3 июл 2006
    Сообщения:
    2.378
    Симпатии:
    1
    Адрес:
    d1.ru, Екатеринбург
    Конечно есть, вы данные перед отправкой в базу не экранировали
     
  3. DarkElf

    DarkElf Активный пользователь

    С нами с:
    22 окт 2006
    Сообщения:
    1.632
    Симпатии:
    0
    а если логин с паролем пустые будут?
     
  4. host

    host Активный пользователь

    С нами с:
    20 июн 2007
    Сообщения:
    733
    Симпатии:
    3
    вы ничего не сделали для проверки информации в $_POST['user'] и др.
     
  5. Klin

    Klin Активный пользователь

    С нами с:
    15 май 2008
    Сообщения:
    82
    Симпатии:
    0
    можете описать как именно можно возпользоватся(если не долго надо писать)?
    Нормально работает, не проходит
    Вот короче сайтик куда я кинул http://internetrabota.jino-net.ru/index.php Логин - test Пароль - 159753
    еще пробывал подставить под логин и пароль такие данные 1" OR "1" = "1 тоже не проходит, А правильные данные вписую проходит
     
  6. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Если Вы услышали про инъекции, то бегите читать море статей, которые про это рассказывают. И нечего напрягать людей и спрашивать на форуме то, чего читать не хотите.
     
  8. Klin

    Klin Активный пользователь

    С нами с:
    15 май 2008
    Сообщения:
    82
    Симпатии:
    0
    Спасибо теперь команда 1' OR '1' = '1 проходит теперь буду разбиратся дальше.
    Чем я лично вас напрягаю? Я никого не заставляю насильно отвечать, кто хочет тот и отвечает.
     
  9. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  10. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Читайте КМБ =))
    http://www.inattack.ru/group_article/45.html
    Зы. Надо у тебя в подписи будет ссылку закрепить...
    Зыы. Всякую бяку типа кавычек лучше заменять на html представления...
     
  11. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
  12. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    mysql_escape_string и ей подобные, вот всё что нужно для того, чтобы избежать SQL инъекции любого рода.
     
  13. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    ну если надо, можно так
    Код (Text):
    1. $text=str_replace("`","&#0".ord('`').";",$text);
     
  14. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Зачем имя пользователя и пароль обрабатывать в htmlchars???
    Есть специальная функция mysql_escape_string() которая экранирует все нужные символы.
     
  15. Klin

    Klin Активный пользователь

    С нами с:
    15 май 2008
    Сообщения:
    82
    Симпатии:
    0
    Спасибо, буду пробовать

    Я уже прочитал все статьи много полезного подчерпнул, дело в том что в настройках было включено magic_quotes_gpc,
    я пытался подставить запрос 1' OR '1' = '1 он не обрабатывал запрос, когда в скрипте подставлял все срабатывал, я просто не догнал почему не обрабатывается с сайта. поэтому и задал вопрос. За ссылку отдельное спасибо, очень интересные статья для новичка.


    Всем остальным тоже спасибо за ответы

    P.S. Надо самому установить php и mysql чтобы хоть немного раздублится в настройках
     
  16. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    я ей не доверяю, давно давно видел статью как её обходят, забыл как, ссылку на статью тоже забыл, но недоверие осталось...
     
  17. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  18. Anonymous

    Anonymous Guest

    Sergey89, +1
     
  19. Koc

    Koc Активный пользователь

    С нами с:
    3 мар 2008
    Сообщения:
    2.253
    Симпатии:
    0
    Адрес:
    \Ukraine\Dnepropetrovsk
    объясните мне, чем addslashes отличается от mysql_escape_string ?
    Mr.M.I.T., а вот действительно, нафуя это преобразовывать всякое дерьмо в логине в htmlspecialchars?
     
  20. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    addslashes
    mysql_real_escape_string
     
  21. Anonymous

    Anonymous Guest

    еще стоит добавить, что при передаче идентфикатора соединения в mysql_real_escape_string он заэкранирует ЛЮБЫЕ символы, требующие экранизации. (в зависимости от кодировки, например) Это единственная 100% правильная функция для экранирования данных, вносимых в базу данных MySQL.
     
  22. блудный сын

    блудный сын Активный пользователь

    С нами с:
    18 июн 2008
    Сообщения:
    632
    Симпатии:
    0
    Че та все забыли, что писал Vladson:
     
  23. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    а если в качестве данных я пошлю кусочек текста в виде запросика, фильтровать (экранировать) будем? :)
     
  24. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
    Ага... нож сам по себе тоже не опасен... Вопрос лишь в том, что им будут резать - тебя или колбасу :)
     
  25. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    блудный сын, +1, запрос - это запрос, а данные - это данные. Данные действительно не опасны. Превращение данных в запрос (что и есть инъекция) - опасно.

    Sergey89
    Горбунов Олег
    А какой смысл экранировать символы \r, \n, \0, \x1a и иже с ними? Они же все равно не могут быть признаком конца строки.
    Экранировать \ и ' (при использовании одинарной кавычки для строк в SQL) - и достаточно. С этим прекрасно (и наверняка быстрее) справляется функция addslashes().