За последние 24 часа нас посетили 17585 программистов и 1723 робота. Сейчас ищут 1914 программистов ...

SQL-инъекции

Тема в разделе "PHP для новичков", создана пользователем nixx, 28 мар 2013.

  1. r3l0c

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

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    igordata Короч под экранированием я понимал экранирование не только инфы снаружи, но и экранирование опасных символов, которые она содержит. А под фильтрацией просто удаление опасных символов%)
     
  2. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Правильно я понял про SQL-инъекции? Вставка дополнительного кода в адресную строку браузера
     
  3. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    А input?
     
  4. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    из строки адреса или из куки - разницы нет, откуда будет браться код. Суть в sql инъекции в том, чтобы изменить запрос к базе по своему усмотрению.
     
  5. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Input все-таки легче отфильтровать.
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чем что?
     
  7. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Вот это хороший фильтр для примера
    Код (Text):
    1. function replacer ($text) {
    2. $text=str_replace(" ",' ',$text);
    3. $text=str_replace(">",'>',$text);
    4. $text=str_replace("<",'&lt;',$text);
    5. $text=str_replace("\"",'&quot;',$text);
    6. $text=preg_replace("/\n\n/",'<p>',$text);
    7. $text=preg_replace("/\n/",'<br>',$text);
    8. ...
     
  8. r3l0c

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

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    это вообще не фильтр, это велосипедвелосипед
     
  9. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
  10. r3l0c

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

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    И даже не для защиты от инъектов%)
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    чета вы хреново читаете, сэр.
     
  12. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Избитая тема.
    Фильтруй так, как тебе надо + mysql_real_escape_string и будет тебе счастье.
    Например, если входят цифры 12345, и ничего больше войти не должно, то просто вырезай все цифры из принятой строки.
    Если нужно что бы пришло слово на латинице, причем не более 10 символов, то чекай на длинну, чекай наличие кирилицы, и наконец юзай mysql_real_escape_string
    Просто импровизируй по поводу этого.
    Однако если попадется матерый программист, вряд ли что нибудь поможет. Профи все сломают на*рен :D
     
  13. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ты большой знаток. три ж недели уже опыту!

    есть intval() и (int) для таких случаев.

    именно кириллицы? а ежели кантонский иероглиф пришлют - то нехай будет?

    тут не надо импровизировать. тут всё укладывается в три пункта.
    какой же вы мудрый аж мороз по коже. где вы всего этого дерьма понахватались? уж не у всеблагого ли Жопова?
     
  14. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Господа объясните доходчиво почему function replacer ($text)
    не отфильтрует инпут и соответственно попадание через него вредоносного кода в БД.
     
  15. [vs]

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

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    потому что она ничего не делает с символом % например, а еще с null-byte
     
  16. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    Я не говорил что я знаток, просто уже сталкивался с таким траблом.

    Я это и имел ввиду.

    Я к примеру. Или пусть просто вырезает все инглиш буквы.

    Помогаю чем могу.

    Мне кажется или кто-то здесь присутствующий яро завидует господину Попову? Ой, не поймите не правильно, это конечно же не u'вы'!
     
  17. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Ты знаешь метод обхода mysql_real_escape_string ?
     
  18. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Нет я не завидую попову. Просто ты сейчас ведешь себя как он - даешь советы о том, о чем не имеешь представления.

    Выше же описали способ обхода ваших рекомендаций. Вы что - слепые? Ну так же нельзя! Это смешно.

    Про зависть к попову давай уже завязывай вспоминать. Это нелепо.
     
  19. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Интересно, допустим я хочу заливать в базу гипер-текстовую-разметку, что же делать, как быть?
    И хочу, чтобы пользователи тоже так умели делать...
    А может быть они себе стили сами рисовать захотят и свой профиль размечать...

    И вообще, что вы тут фильтруете?
    Вы придумали новый htmlspecialchars?
    Ну хочу вас огорчить вы и к 1% не приблизились. =)

    То есть наебень фильтров, потом еще и эскейпом пройди и еще раз отфильтруй, убей нахер базу, а потом еще раз отфильтруй и убедись, что база точно умерла...
    По моему вам лечиться надо...

    Priler,
    Дак <матное слово> вы на форум Попова, <матное слово> вы тут забыли?
     
  20. r3l0c

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

    С нами с:
    10 янв 2013
    Сообщения:
    453
    Симпатии:
    4
    Ухах. Посидел, посмеялся%). К чему катится мир%)
     
  21. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    К функциональным языкам и далее - острая необходимость в ИИ.
     
  22. nixx

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

    С нами с:
    20 фев 2013
    Сообщения:
    132
    Симпатии:
    0
    Был такой случай.Первый раз самостоятельно сделал небольшой сайтик на cmsms .Через некоторое время сайт перестал работать.Оказалось,что родной конфиг затерт,а вместо него появился другой конфиг и еще левые файлы и папки.
    Такой вариант мог быть от SQL-инъекции или это другое ?
     
  23. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    от чего угодно мог быть.

    Доктор, мой котик сначала был весёлый, а потом сдох. От чего это может быть?
     
  24. Колбася

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

    С нами с:
    12 дек 2011
    Сообщения:
    722
    Симпатии:
    0
    да, недавно пробовал к бд подобраться в вконташле так там хрен поймешь что откуда растет. все ссылки реврайтнутые и закрытые. пичалька,
     
  25. Priler

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

    С нами с:
    2 мар 2013
    Сообщения:
    171
    Симпатии:
    0
    Адрес:
    New-York
    У меня лично статично входящие данные практически всегда фильтруются так:
    Код (Text):
    1.  
    2. if(isSet($_GET['action'])) {$action=$_GET['action'];} else {header('Location: /');}
    3. if(empty($action)) {header('Location: /');}
    4. if($action!='show_desk') {header('Location: /');}