LINUX.ORG.RU

GreenSQL-FW 1.2.0

 , , ,


0

0

Вышел релиз GreenSQL-FW 1.2.0 — SQL-прокси-сервера, обеспечивающего защиту от атак типа «SQL-инъекция» на различные приложения, использующие базы данных MySQL и PostgreSQL, в частности, на системы управления контентом (CMS).

В версии 1.2.0 добавлена штатная поддержка PostgreSQL, а также значительно изменен пользовательский интерфейс.

GreenSQL поддерживает несколько режимов работы:

  • Обучение — система анализирует проходящий через нее SQL-трафик и формирует белые списки разрешенных запросов.
  • IDS (Intrusion Detection System) — система анализирует трафик, выявляет потенциально опасные запросы и заносит их в логи.
  • IPS (Intrusion Prevention System) — система блокирует потенциально опасные запросы.
  • Активная защита — пропускаются только запросы, соответствующие шаблонам белого списка.

Для выявления потенциально опасных запросов используются следующие методы:

  • Проверка по шаблонам — позволяет блокировать запросы, изменяющие структуру базы, выполняющие административные команды, и т.п. Разумеется, список этих шаблонов легко настраивается.
  • Расчет степени риска — для каждого запроса оценивается показатель риска, повышающийся от таких факторов, как наличие в запросе комментариев, тавтологий (... OR 1=1) и т.п. Запросы с уровнем риска, превышающим заданное значение, блокируются.

Управление GreenSQL осуществляется через веб-интерфейс (скриншоты).

Для скачивания доступны не только исходный код, но и готовые пакеты под наиболее популярные серверные дистрибутивы — Debian и CentOS, а также под Ubuntu и Fedora.

>>> Подробности

★★★★

Проверено: maxcom ()
Последнее исправление: Klymedy (всего исправлений: 1)

Ответ на: комментарий от AVL2

>передача параметров от пользователя в шаблон запроса.

Запрос должен быть без всяких шаблонов, а данные пользователя идут в параметры запроса.

То есть существует запрос и отдельно данные, в виде параметров. В таком случае данным никогда не попасть в запрос.

prepare тут тоже не в тему. prepared запросы обычно используют параметры. Но можно использовать параметры и без всякого prepare.

shanechko
()
Ответ на: комментарий от shanechko

Это все здорово, но далеко тогда и запросов будет просто дохера.

Например, если запрос идет с разными order by и списком возвращаемых полей, то в итоге поимеем количество запросов как произведение всех вариантов.

AVL2 ★★★★★
()
Ответ на: комментарий от shutty

Типично советское паразитирование на государстве. В данном случае профессор ничем не отличается от попа, и тот, и тот продает небылицы за рубли.

anonymous
()
Ответ на: комментарий от AVL2

> Например, если запрос идет с разными order by и списком возвращаемых полей, то в итоге поимеем количество запросов как произведение всех вариантов.

Тебя кто-то с терморектально заставляют заранее препарить все запросы? Чем результат вот этого:

$q1 = $conn->prepare(«select * from tabname where f1=:a and f2=:b order by f1,f2»);
$q1->execute(array(":a"=>$arg1,":b"=>$arg2));
$q2 = $conn->prepare(«select * from tabname where f1=:a and f2=:b order by f2,f1»);
$q2->execute(array(":a"=>$arg1,":b"=>$arg2));

отличается от вот этого:

$q1 = $conn->query(«select * from tabname where f1='» . $arg1 . «' and f2='».$arg2.«' order by f1,f2»);
$q2 = $conn->query(«select * from tabname where f1='» . $arg1 . «' and f2='».$arg2.«' order by f1,f2»);

Вижу только одну проблему - первый вариант на одну строку длиннее. Во всем остальном первый вариант лучше чем второй.

no-dashi ★★★★★
()
Ответ на: комментарий от anonymous

> капча romes vey, введу comes vey

Эта капча так устроена. Одно слово контрольное – его нужно угадать правильно, а другое сам сервер не знает, пофиг что вводить.

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

Некоторые советуют контрольное слово отгадывать, а вместо второго всегда писать fuck.

anonymous
()
Ответ на: комментарий от anonymous

> Тогда есть смысл посадить на капчу распарсивание вот этих самых sql-запросов. И два варианта: пропустить/не пропустить. Вот так и составим базу данных с образцами кривых запросов, которые можно потом просто отфильтровывать прямо в момент написания быдлосайтов.

А что, если одинаковый запрос, но разное физическое устройство? Где-то индекс есть, а где-то нет. Даже если одинаковые схемы, но разная статистика?

skwish ★★
()
Ответ на: комментарий от littlechris

> Чего только не придумают, чтобы не использовать prepared statements.

Придумали, например Data Warehousing. С переменной привязки запрос выполняется 24 секунды, если использовать dynamic sql и напрямую проставить переменную, то база проанализирует статистику и выполнит этот запрос на 1.2 секунды. И это на кластере из парочки Sun v890 и нормального SAN.

Кошмарные цифры для OLTP системы, но вполне приемлемые для Data Warehouse.

skwish ★★
()
Ответ на: комментарий от skwish

>> Даже если одинаковые схемы, но разная статистика?

sql-кластер - это темная история

kto_tama ★★★★★
()
Ответ на: комментарий от AVL2

> Собственно, вопрос как раз втом, что делать, если аргумент, это как раз order by

Это значит, что система спроектирована через одно место. Это констатация факта, ничего личного.

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Почему обычная IP сеть может иметь файрвол с блокированием атак, а PHP сайт не может?

Pilat
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.