За последние 24 часа нас посетили 231590 программистов и 1779 роботов. Сейчас ищут 3009 программистов ...

Убрать SQL в строке

Тема в разделе "PHP для новичков", создана пользователем VaneS, 11 фев 2015.

  1. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Здравствуйте, как мне убрать все служебные слова CQL со строки?
    Читал вот тут http://php.ru/manual/ref.strings.html но ничего не нашел...
    Есть функция http://php.ru/manual/function.strip-tags.html но она мне не подходит, так как она только удаляет html и php, но мне нужно что то подобное ей, только для SQL.
     
  2. rognorog

    rognorog Новичок

    С нами с:
    7 июл 2014
    Сообщения:
    330
    Симпатии:
    0
  3. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    это ты так от инъекций защищаешься?
     
  4. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Можно и так сказать.
    У меня в коде есть такой запрос к бд
    Код (Text):
    1. SELECT id FROM site WHERE mail='$mail' AND pass='$pass'
    Вот думаю, нельзя ли будет чего натворить в бд?
     
  5. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    о боги... ты уже 3+ года на пхп.ру и твоя голова забита вот таким говнокодом? офигеть...
    1. атака будет если ты не экранируешь строковые значения и работаешь в текстовом режиме.
    2. никто никогда не ищет пароль в бд - выбирается строка юзера (если есть) и сравнивается пароль с введенным в форме.
    3. никто никогда не хранит пароль в открытом виде - используется хэш строки.
     
  6. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Пароль у меня и не хранится в открытом виде.
    Я написал такой запрос потому что решил что можно авторизовать пользователя одним ифом, вот так:
    Код (PHP):
    1. if(mysqli_num_rows(mysqli_query($db,"SELECT id FROM user WHERE mail='$mail' AND pass='$pass'")) == 1) 
    И в чем разница как я буду сравнивать пароль? В запросе или после того как сделаю выборку строки пользователя?
    А вот по поводу
    Можно пожалуйста по подробнее?
     
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
  8. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Спасибо я посмотрю!
     
  9. Ganzal

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

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    а зачем пользователя авторизовывать одним ифом? а как же проверки активности учетки, тухлости пароля и тому подобное?
    огромная разница. так ты светишь ВСЕ пароли.
    можно. ты обмениваешься запросами с сервером в текстовом режиме. то есть просто последовательность байт которую анализатор будет потом разбирать, приводить к типам и тому подобное. на выходе из пхп и на входе в мускул это обычная строка. если подставляемые в эту строку данные не экранируются - запрос принимает неожиданные формы и допускает выполнение иъекций. если экранируются - запрос не принимает неожиданных форм.
     
  10. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Да там нет такой нужды... Там простейшая админка для сайта.
    А вот это да, что то я не подумал об этом.
    Спасибо, я учту!