MySQL - рекомендации по безопасности для программирования | ВесьТоп создание и продвижение сайтов

Поддержка сайта

Высокие позиции в поисковой системе, на прямую зависят от развития вашего сайта.

Продвижение сайтов

Эффективность стратегий продвижения подтверждается сотрудничеством с крупными клиентами и отзывами о нашей работе.

Создание сайтов

Мы делаем сайты быстро, недорого и профессионально. От работы с нами, у вас останутся только положительные эмоции.

MySQL — рекомендации по безопасности для программирования

Приложения, которые обращаются к MySQL, не должны доверять вводимым пользователем данным, которые могут попытаться обмануть код, введя специальную (экранированную) последовательность символов в веб-формах, URL-адресах или любом клиентском приложении.

Убедитесь, что ваше приложение остается безопасным, если пользователь вводит аналогичный код:

УДАЛИТЬ БАЗУ ДАННЫХ mysql;

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

Защита цифровых данных

Распространенная ошибка — защищать только значения строковых (текстовых) данных. Не забудьте также проверить цифровые данные. Если приложение генерирует следующий запрос:

ВЫБРАТЬ * ИЗ таблицы WHERE ID = 234

когда пользователь вместо ввода только значения 234 вводит значение (или последовательность символов) 234 ИЛИ 1 = 1, что заставляет приложение генерировать запрос:

ВЫБРАТЬ * ИЗ таблицы, ГДЕ ID = 234 ИЛИ 1 = 1

Поскольку всегда выполняется условие 1 = 1 OR, сервер отображает каждую строку в таблице. Таким образом предоставляется все содержимое таблицы и сервер перегружается.

Самый простой способ защититься от этого типа атак — заключить цифровые константы в одинарные кавычки:

ВЫБРАТЬ * ИЗ таблицы ГДЕ ID ='234'

Если пользователь вводит дополнительную информацию, все становится частью строки. Поскольку для этого поля определен числовой тип информации (целое число, INT), MySQL автоматически преобразует эту строку в число и удаляет из нее все другие нечисловые символы.

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

Даже если допустимо отображать каждую строку в базе данных, должен быть механизм защиты от DoS (отказа в обслуживании). В противном случае ваш сервер не будет отвечать на запросы законных пользователей.

Проверка безопасности приложения

  • Включите строгий режим SQL, чтобы сервер мог работать в ограниченном режиме в отношении получаемых данных. Сервер MySQL может работать в разных режимах SQL и по-разному применять эти режимы к разным клиентам в зависимости от значения системной переменной sql_mode. Режимы влияют на синтаксис SQL, поддерживаемый MySQL и проверками достоверности данных.
  • Попробуйте ввести одинарные и двойные кавычки (' а также ") во всех контактных веб-формах. Если вы получили ошибку MySQL, немедленно проверьте проблему.
  • Попробуйте изменить динамические URL-адреса, добавив к ним% 22 ("),% 23 (#) и% 27 (‘).
  • Попробуйте изменить типы данных в динамических URL-адресах с числовых на буквенно-цифровые символы, используя символы, показанные в предыдущих примерах. Ваше приложение должно быть защищено от этих и подобных атак.
  • Попробуйте вводить буквы, пробелы и специальные символы вместо цифр в числовые поля. Приложение должно удалить их, прежде чем сохранять в MySQL или генерировать ошибку. Не позволяйте принимать непроверенные значения в MySQL.
  • Перед сохранением в MySQL проверьте размер данных.
  • Подключите свое приложение к базе данных, используя имя пользователя, отличное от того, которое вы используете в административных целях.
  • Не давайте своим приложениям права доступа, которые им не нужны.

Безопасность интерфейсов программирования

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

MySQL C API: используйте функцию mysql_real_escape_string_quote ().

MySQL ++: используйте в запросах модификаторы escape и кавычки.

PHP: используйте расширения mysqli или pdo_mysql вместо старого расширения ext / mysql. API-интерфейсы поддерживают протоколы аутентификации MySQLi, а также подготовленные операторы с заполнителями.

Если вам нужно использовать более старое расширение ext / mysql, используйте mysql_real_escape_string_quote () вместо mysql_escape_string () или добавляетlashes (), потому что только mysql_real_escape_string_quote () поддерживает набор символов. Другие функции можно обойти при использовании (недействительных) многобайтовых наборов символов.

Perl DBI: используйте подстановочные знаки или метод quote ().

Ruby DBI: используйте подстановочные знаки или метод quote ().

Java JDBC: используйте объекты подготовленных операторов и заполнители.

Другие программные интерфейсы могут иметь аналогичные возможности.

Читайте так же:
Not found

Нам доверяют

Интернет магазин