За последние 24 часа нас посетили 17663 программиста и 1721 робот. Сейчас ищут 1840 программистов ...

База данных mySQL - как правильно подключиться и сделать запрос?

Тема в разделе "PHP и базы данных", создана пользователем miltorg, 22 июл 2019.

Статус темы:
Закрыта.
  1. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE test; --"' where id=Pupkin' at line 1

    https://ru.piliapp.com/mysql-syntax-check/
     
  2. romach

    romach Старожил

    С нами с:
    26 окт 2013
    Сообщения:
    2.904
    Симпатии:
    719
    Я не знаю чему вас там учили, но вам привели уязвимость и даже показали вектор его использования. Один из.

    Вот так можно пройти ваш "валидатор" и заодно изменить пароль пользователю с нужным id, задать роль, короче любым возможным способом поднять себе привилегии. Или просто затереть базу построчно.
    Код (Text):
    1. UPDATE test SET imja='fedja', familija='"1', password='123' where id=1 -- "' where id=Pupkin
    Избавляться от целого класса потенциальных проблем одним решением - это и есть проявление технического мышления. Ну и проворачивать в голове абстракции, да.
     
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    если внешние данные ломают синтаксис

     
  4. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Слишком много слов. Всё не прочитал.
    Вы привели запрос который с ваших слов сломает мою базу. - Я засунул этот запрос в онлайн валидатор.
    Онлайн валидатор написал что запрос с ошибками --- Запрос не выпонется --- Взлома нет
    Что я сделал не так?

    Остальное всё - словеса. У вас есть запрос который пройдёт валидатор и хоть что-то сломает в базе?
    --- Добавлено ---
    Повторю, что эти все запросы возможны вообще потому, что я описался в первоначальном коде. Но и даже с этой опиской - запросы не проходят валидатор.
     
  5. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    это как у тебя получилось, если ограничил алфавит, магия ? o_O
    http://sandbox.onlinephpfunctions.com/code/a9d0e9a02dcc07346afaa858cfe154c3c8dc0f0f
     
  6. villiwalla

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

    С нами с:
    14 дек 2016
    Сообщения:
    471
    Симпатии:
    70
    Наверное потому что онлайн валидатор не допустил тех промохов о которых идёт речь.
     
  7. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    А нашёл:
    UPDATE test SET imja='fedja', familija='"1', password='123' where id=1 -- "' where id=Pupkin

    валидатор это пропускает. Но запрос не получиться так-как Пароля там нет.
    Если выкинуть Пароль - Может получится поменять значения в таблице Тест. Может.
    --- Добавлено ---
    вы тоже не видите моей описки в первоначальном коде?
     
    #107 miltorg, 22 июл 2019
    Последнее редактирование: 22 июл 2019
  8. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    это с первой страницы было замечено как опечатка.
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    никто не осуждает тебя за опечатку
    это дело житейское

    очень странно, что ты упираешься в том, что делаешь откровенно не правильно
    есть встроенные инструменты для защиты БД от внешних вторжений
    эти инструменты написаны профессионалами и дебажились годами на миллионах проектов

    ты правда веришь, что твоя регулярка надежнее этого?
     
  10. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Просто человек искал до чего докапаться и вот счастье - опечатка:

    --- Добавлено ---
    Моя регулярка из 1 строчки делает то, для чего некоторые подключают целые фремворки.
    Моя регулярка просто функциональна и удобна. И всё
    --- Добавлено ---
    И с чего вы взяли что это именно МОЯ регулярка?
    Я конечно же её когда-то, где то увидел. В году так 2003. Когда ещё не было никаких PDO и фильтров.
    А некоторые здешние "программисты" пошли тогда в первый класс.
     
  11. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    твоя регулярка не делает необязательным проверку строки перед вставкой в SQL запрос
    она может быть, если она нужна (а может и не быть)
    но проверить строку перед вставкой в запрос нормальный бэкэндер ОБЯЗАН
     
  12. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    И именно по этому, что я чувствую, что могу упустить какие то новшества - я и завёл всю эту беседу.
    Но ничего нового для себя не вынес, к сожалению.
     
  13. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    это не важно, чья она
    важно, что ты её зачем-то отстаиваешь
     
  14. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Почему это? Обоснуйте.
     
  15. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Так подставлять без кавычек надо было, кавычки @runcore указал, чтоб отделить строку от остального текста :)
     
  16. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    очень жаль
    значит ты утратил способность учиться
    и похоже, что это произошло
     
  17. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
     
  18. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    @miltorg. Я обосновывал - требования к проекту могут измениться :)

    Не надо передёргивать. Фреймворки подключаются не только для работы с БД. Это лишь одна из тысячи плюшек
     
  19. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Обоснования не будет? - Очень жаль
    --- Добавлено ---
    Вы всё ещё про мою опечатку? Уже не интересно
    --- Добавлено ---
    Вы вообще не читаете что тут пишут? Тут человек совершенно чётко писал что для работы с базой он подключает фреймворк
    --- Добавлено ---
    А что не так? Ну хоть намекните. Ну пожалуйста.
     
  20. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    обоснования чего?
    что писать 50 регулярок для 50 элементов форм - это не правильный подход?
    я думал, что это очевидно
    а если это textarea, в который можно писать всё что угодно?
    что делать тогда?
     
  21. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    А могут и не меняться. А могут меняться - в сторону упрощения.
    Заканчивайте словоблудие - не интересно
    --- Добавлено ---
    Я писал тут про текстария - повторяться не буду. Скучно.
    А вот про 50 элементов формы - это интересно. Сейчас подумаю
     
  22. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    Ага, удалить апострофы. Класс. А мне, на то, чтоб если так делал движок этого форума, мы бы не смогли оставлять здесь листинги, ничего не ответили :)
    --- Добавлено ---
    Самое интересное, спросили как надо, вам показали, как надо, нет, всё равно: "моя регулярка лучше"
     
  23. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    и не забудь, что элементы форм бывают <input name="attribute[0][name]"> ^_^
    --- Добавлено ---
    и удалять ничего нельзя
    данные должны сохраниться в первозданном виде
    это сообщение
    --- Добавлено ---
    или даже это JS код
    хз зачем он в бд, но если что-то удалить то он сломается
     
  24. miltorg

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

    С нами с:
    7 апр 2019
    Сообщения:
    375
    Симпатии:
    12
    Адрес:
    Калининград
    Я отвечал что нужно заменять их на ХТМЛ сущности и даже приводил регулярку
     
  25. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    а это регуляркой делается?
    я думал для этого htmlspecialchars() придумали уже много лет назад
    или это было уже после 2003 года ?

    но всё равно это не верный подход

    топором гвозди забивать конечно можно и ничего тебе за это не будет
    но это не правильно
     
Статус темы:
Закрыта.