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/
Я не знаю чему вас там учили, но вам привели уязвимость и даже показали вектор его использования. Один из. Вот так можно пройти ваш "валидатор" и заодно изменить пароль пользователю с нужным id, задать роль, короче любым возможным способом поднять себе привилегии. Или просто затереть базу построчно. Код (Text): UPDATE test SET imja='fedja', familija='"1', password='123' where id=1 -- "' where id=Pupkin Избавляться от целого класса потенциальных проблем одним решением - это и есть проявление технического мышления. Ну и проворачивать в голове абстракции, да.
Слишком много слов. Всё не прочитал. Вы привели запрос который с ваших слов сломает мою базу. - Я засунул этот запрос в онлайн валидатор. Онлайн валидатор написал что запрос с ошибками --- Запрос не выпонется --- Взлома нет Что я сделал не так? Остальное всё - словеса. У вас есть запрос который пройдёт валидатор и хоть что-то сломает в базе? --- Добавлено --- Повторю, что эти все запросы возможны вообще потому, что я описался в первоначальном коде. Но и даже с этой опиской - запросы не проходят валидатор.
это как у тебя получилось, если ограничил алфавит, магия ? http://sandbox.onlinephpfunctions.com/code/a9d0e9a02dcc07346afaa858cfe154c3c8dc0f0f
А нашёл: UPDATE test SET imja='fedja', familija='"1', password='123' where id=1 -- "' where id=Pupkin валидатор это пропускает. Но запрос не получиться так-как Пароля там нет. Если выкинуть Пароль - Может получится поменять значения в таблице Тест. Может. --- Добавлено --- вы тоже не видите моей описки в первоначальном коде?
никто не осуждает тебя за опечатку это дело житейское очень странно, что ты упираешься в том, что делаешь откровенно не правильно есть встроенные инструменты для защиты БД от внешних вторжений эти инструменты написаны профессионалами и дебажились годами на миллионах проектов ты правда веришь, что твоя регулярка надежнее этого?
Просто человек искал до чего докапаться и вот счастье - опечатка: --- Добавлено --- Моя регулярка из 1 строчки делает то, для чего некоторые подключают целые фремворки. Моя регулярка просто функциональна и удобна. И всё --- Добавлено --- И с чего вы взяли что это именно МОЯ регулярка? Я конечно же её когда-то, где то увидел. В году так 2003. Когда ещё не было никаких PDO и фильтров. А некоторые здешние "программисты" пошли тогда в первый класс.
твоя регулярка не делает необязательным проверку строки перед вставкой в SQL запрос она может быть, если она нужна (а может и не быть) но проверить строку перед вставкой в запрос нормальный бэкэндер ОБЯЗАН
И именно по этому, что я чувствую, что могу упустить какие то новшества - я и завёл всю эту беседу. Но ничего нового для себя не вынес, к сожалению.
Так подставлять без кавычек надо было, кавычки @runcore указал, чтоб отделить строку от остального текста
@miltorg. Я обосновывал - требования к проекту могут измениться Не надо передёргивать. Фреймворки подключаются не только для работы с БД. Это лишь одна из тысячи плюшек
Обоснования не будет? - Очень жаль --- Добавлено --- Вы всё ещё про мою опечатку? Уже не интересно --- Добавлено --- Вы вообще не читаете что тут пишут? Тут человек совершенно чётко писал что для работы с базой он подключает фреймворк --- Добавлено --- А что не так? Ну хоть намекните. Ну пожалуйста.
обоснования чего? что писать 50 регулярок для 50 элементов форм - это не правильный подход? я думал, что это очевидно а если это textarea, в который можно писать всё что угодно? что делать тогда?
А могут и не меняться. А могут меняться - в сторону упрощения. Заканчивайте словоблудие - не интересно --- Добавлено --- Я писал тут про текстария - повторяться не буду. Скучно. А вот про 50 элементов формы - это интересно. Сейчас подумаю
Ага, удалить апострофы. Класс. А мне, на то, чтоб если так делал движок этого форума, мы бы не смогли оставлять здесь листинги, ничего не ответили --- Добавлено --- Самое интересное, спросили как надо, вам показали, как надо, нет, всё равно: "моя регулярка лучше"
и не забудь, что элементы форм бывают <input name="attribute[0][name]"> ^_^ --- Добавлено --- и удалять ничего нельзя данные должны сохраниться в первозданном виде это сообщение --- Добавлено --- или даже это JS код хз зачем он в бд, но если что-то удалить то он сломается
а это регуляркой делается? я думал для этого htmlspecialchars() придумали уже много лет назад или это было уже после 2003 года ? но всё равно это не верный подход топором гвозди забивать конечно можно и ничего тебе за это не будет но это не правильно