8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|||||||||||
1 | |||||||||||
MySQL Защита от SQL инъекций-PDO07.11.2017, 20:21. Показов 3417. Ответов 20
Метки нет (Все метки)
Прочитал,что для защиты от инъекций нужно использовать PDO. Если переменная является параметром в запросе,то всё нормально,
но если названием таблицы,то всё,ничего не работает. Вроде как и не должно работать с названиями таблиц,но как тогда их защитить от инъекций?
0
|
07.11.2017, 20:21 | |
Ответы с готовыми решениями:
20
Защита от sql инъекций Защита от SQL-инъекций защита от sql инъекций Защита от SQL инъекций |
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
07.11.2017, 21:21 | 2 |
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|
07.11.2017, 22:08 [ТС] | 3 |
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
07.11.2017, 22:30 | 4 |
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|
08.11.2017, 19:18 [ТС] | 5 |
А могу ли я хранить имена таблиц в БД и когда нужно доставать их, помещать в массив, потом с помощью in_array проверят наличие нужного мне значения и если оно есть, то выполнять подключение к базе? Больше ничего не нужно экранировать или ещё чего,просто сравнивать названия и всё?
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
08.11.2017, 21:24 | 6 |
Можешь, но зачем делать лишний запрос?
А как запрос к базе сделаешь при отсутствии подключения? Для чего нужно экранирование. Чтобы символ, который имеет специальное значение в некотором контексте этого специального значения лишить. И если есть список готовых для безопасной подстановки в запрос строк, то зачем еще его экранировать?
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|||||||||||
09.11.2017, 00:20 [ТС] | 7 | ||||||||||
Что-то я недопонимаю видимо. У меня всё работает так:
в админке я создаю страницу,это таблица содержит в себе поля id, title,name_page,get_page,text. Там же в админке,сразу после создания,появляется ссылка на созданную страницу в виде
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
09.11.2017, 00:22 | 8 |
Сообщение было отмечено Burnoutman как решение
Решение
т.е для каждой страницы создаются динамически отдельная таблица? Не надо так делать
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|
09.11.2017, 00:36 [ТС] | 9 |
Правильно будет все страницы хранить в одной таблице?
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
09.11.2017, 00:56 | 10 |
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|||||||||||
10.11.2017, 01:04 [ТС] | 11 | ||||||||||
А можно на одной странице одновременно использовать подключение к базе PDO и обычное,чтобы работало query? Есть запросы в БД,которые просто прописаны в коде без использования переменных и они все не работают из-за подключения способом DSN для PDO.
Что-то это PDO тёмный лес какой-то. PDO
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
10.11.2017, 11:30 | 12 |
Burnoutman, смотри ошибки pdo
0
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
||||||
14.11.2017, 00:04 [ТС] | 13 | |||||
Если использовать белый список для защиты от инъекций,так будет правильно?
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
14.11.2017, 00:14 | 14 |
явно что-то не то.
Тут и вытаскивание всех строк вместо одной, и применение операции конкатенации к массиву, и редирект на js.
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|
14.11.2017, 00:31 [ТС] | 15 |
А как тогда сравнить,есть у меня в базе такие или нет, не делая при этом запрос в базу?
Думал,что так можно header('Location:')?
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
14.11.2017, 00:33 | 16 |
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|
14.11.2017, 00:37 [ТС] | 17 |
Тогда получается я в запрос подставляю переменную которая приходит от пользователя. Ведь белым списком я и пытаюсь избежать этого запроса без проверки на существующие страницы.
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
14.11.2017, 00:52 | 18 |
Burnoutman, что мешает использовать prepared statements?
1
|
8 / 8 / 5
Регистрация: 05.04.2012
Сообщений: 165
|
|||||||||||
14.11.2017, 09:24 [ТС] | 19 | ||||||||||
Вот так?
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result
0
|
4925 / 3920 / 1620
Регистрация: 24.04.2014
Сообщений: 11,441
|
|
14.11.2017, 09:47 | 20 |
Burnoutman, смотри документацию
https://secure.php.net/manual/... repare.php
1
|
14.11.2017, 09:47 | |
14.11.2017, 09:47 | |
Помогаю со студенческими работами здесь
20
Защита от sql инъекций cookie PDO: Защита от SQL инъекции Защита от инъекций Защита от инъекций перебором массива Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |