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

[Удален]
1462

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Универсальный антибот, антиспам, веб файрвол, защита от накрутки поведенческих № 1 в рунете: https://antibot.cloud/
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 упёрлись да ещё и кривым способом :)

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