"Белый список" - панацея ли от SQL-инъекций?

[Удален]
1441

Вопрос к действительно понимающим людям. Пишу один самописный движек, и конечно же, нет уверенности в том, что в него не закрались дыры.

Поэтому я решил построить безопасность просто: сделать белый список, а не заморачиваться с написанием фильтрации входных параметров. Попросту говоря, сделать так, что будут разрешаться только запросы, содержащие в URL (и переменных на запросах в базу) только значения из диапазона 0-9 и A-Z.

Все остальные символы - запрос не выполняется и логируется.

Комментарии & предложения?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

Ну если действительно у вас лишь 0-9 и A-Z то делайте.

Но вообще если у вас Mod_rewrite то это можете там указать и он не пропустит другие.

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
RiDDi
На сайте с 06.06.2010
Offline
256
#2

Эт чего за движок-то такой, где только A-Z и 0-9? 😂

Что, никаких текстов писать в базу не планируете? :)

Не забывайте, что кроме как через GET у Вас ещё через POST, COOKIE, а в ряде случаев и через SESSION может проникнуть всякое )

Фильтровать разумнее непосредственно на входе - то есть перед запросами.

Если Вы хотите как-то систематизировать это, то лучше систематизировать эти самые запросы организовав определенную модель с обработчиками, методы которой уже будут безопасными.

Вебмастер отдыхает на бережках морей. Заработок в интернете - дело техники.
pastuhoff
На сайте с 29.10.2005
Offline
229
#3

Используйте подготовленные выражения для запросов.

Коллекционер доменных имен.
Mik Foxi
На сайте с 02.03.2011
Offline
1076
#4

откажитесь от SQL и не будет инъекций.

Антибот, антиспам, веб файрвол, защита от накрутки поведенческих: https://antibot.cloud/ + партнерка, до 40$ с продажи.
R
На сайте с 13.04.2009
Offline
160
#5

Научиться писать правильные SQL запросы совсем не сложно, тем более если это php, где всё обсасывалось 100 раз. Если вы хорошо понимайте теорию баз данных, то вникнуть можно за час.

Если это php:

Для чисел на входе всегда intval().

Для строк mysql_real_escape_string(), magic_quotes строго off.

Всё, вы знайте основную информацию, которая спасёт от 70-80% sql-inj атак, если нигде отфильтровать не забудете.

Писать фильтры - полный бред. Есть коммерческие WAF (фаерволы для веб приложений) в которых бывает до 60к правил и даже там людям удаётся найти обходы :)

Другое дело что, помимо иньекций, есть ещё как минимум пару векторов атак, например LFI, RCE, XSS, CSRF и т.д., а вы в SQL-inj упёрлись да ещё и кривым способом :)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий