MariaDB - Защита от SQL-инъекций

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

Возможности для внедрения SQL обычно возникают, когда пользователи вводят такие данные, как имя, и логика кода не может проанализировать этот ввод. Код вместо этого позволяет злоумышленнику вставить инструкцию MariaDB, которая будет выполняться в базе данных.

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

if(check_match("/^\w{8,20}$/", $_GET['user_name'], $matches)) {
   $result = mysql_query("SELECT * FROM system_users WHERE user_name = $matches[0]");
} else {
   echo "Invalid username";
}

Также используйте оператор REGEXP и предложения LIKE при создании ограничений ввода.

Рассмотрим все типы необходимого явного контроля ввода, такие как -

  • Управляйте используемыми escape-символами.

  • Управляйте конкретными соответствующими типами данных для ввода. Ограничьте ввод необходимым типом и размером данных.

  • Управляйте синтаксисом вводимых данных. Не допускайте ничего кроме необходимого рисунка.

  • Контролировать разрешенные сроки. Черный список ключевых слов SQL.

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

1=1
-or-
*

Код, позволяющий ввести любой из них вместе с правильной командой, может привести к раскрытию всех пользовательских данных в базе данных или удалению всех данных в базе данных, и ни одна из инъекций не является особенно умной. В некоторых случаях злоумышленники даже не тратят время на изучение дыр; они выполняют слепые атаки простым вводом.

Также обратите внимание на инструменты сопоставления с образцом и регулярных выражений, предоставляемые любым языком программирования / сценариев в паре с MariaDB, которые обеспечивают больший контроль, а иногда и лучший контроль.