Рекомендации Защиты (MySQL и SQL Web-интерфейс)

www.karman.com.ua
портал о хостинге в Украине
Хостинг + Украина = Karman.com.ua

PHPMyAdmin и MySQL

/

Часто задаваемые вопросы


Рекомендации Защиты (MySQL и SQL Web-интерфейс) 

Еще по теме:
  Yandex Webmaster VS site-auditor
  HTML-редактор Apple iWeb - лидер валидности
  В среду будет чат с google Webmaster
  Ищу компаньонов в перспективный world Web стартап.
  Накрутка тИЦ с помощью Webalizer
  Что такое Web 3.0? Доклад на симпозиуме «Пути России»
  Web-Arsenal голосует за HostPro!
  Хостинг с php и MySQL. Аренда VPS

Любой использующий mysql (или любой другой sql сервер) на компьютере, связанном с internet должен прочитать эту консультацию, чтобы избежать наиболее часто встречающихся проблем защиты. Однако необходимо подчеркнуть важность полной защиты сервера (не просто mysql сервера) от всех типов применяемых нападений. В данной статье, к сожалению, не возможно охватить все аспекты проблем безопасности, но самые важные проблемы рассмотрены достаточно полно.

mysql использует защиту, основанную на Списках Управления Доступа (acl) для всех подключений, запросов, и других операций, которые пользователь может пытаться исполнять. Имеется также некоторая поддержка для ssl-зашифрованных подключений между клиентами mysql и серверами. Многие из концепций, обсуждаемых в этой статье, не являются специфическими для mysql и могут быть применены ко всем приложениям.

Когда mysql запущен, постарайтесь следовать этим рекомендациям:
Никому не давайте доступ (кроме администратора mysql) к таблице user в базе данных mysql. Зашифрованный пароль - реальный пароль в mysql. Если Вы знаете пароль, перечисленный в таблице user для данного пользователя, вы можете легко войти как этот пользователь, если у вас есть доступ к компьютеру, перечисленному для этой учетной записи.

Изучите систему привилегии доступа mysql. Команды grant и revoke используются для управления доступом к mysql. Не предоставляйте больших привилегий, чем это необходимо. Никогда не предоставляйте привилегии всем компьютерам в сети. Команды контрольных проверок:

1. Пробуйте mysql -u root. Если вы сможете соединиться с сервером без запроса пароля, значит у вас проблемы. Любой сможет соединиться с вашим mysql сервером как mysql root пользователь с полными привилегиями. Тщательно читайте команды инсталляции mysql, обращая внимание на опции установки пароля.

2. Используйте команды show grants и check, чтобы видеть, кто имеет доступ к какой. Удалите лишние привилегии, используя команду revoke.

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

Не выбирайте пароли из словарей. Имеются специальные программы, чтобы подбирать их. Даже пароли подобно " xfish98 " являются очень плохими. Намного лучше - " "duag98", который содержит то же самое слово " рыба " но напечатанное на одну клавишу влево на клавиатуре. Другой метод состоит в том, чтобы использовать пароли типа "УМББР", который состоит из первых слов в предложении " У Мэри был большой ребенок". Такие пароли просто запомнить и напечатать, но трудно подобрать злоумышленнику.

Используйте firewall. Он защитит вас, по крайней мере, от 50% эксплуатирующихся уязвимостей в любом программном обеспечении. mysql использует 3306 порт по умолчанию. Этот порт должен быть доступен только от доверенных компьютеров. Самый простой способ проверить, является ли ваш порт mysql открытым, состоит в том, чтобы пробовать следующую команду от некоторой отдаленной машины, где server_host - имя хоста вашего mysql сервера: telnet server_host 3306

Не доверяйте никаким данным, введенными пользователями. Они могут обмануть ваш код, вводя специальные символы в web форме или url. Убедитесь, что ваше приложение остается безопасным, если пользователь вводит что-то подобно: drop database mysql;. Это - критический пример, но множество утечек защиты и потеря данных могут происходить из-за хакеров, использующих подобные методы. Также, не забудьте проверять числовые данные. Обычная ошибка должна защитить только строки. Иногда люди думают, что, если база данных содержит только публично доступные данные, она не должна защищаться. Это неправильно. По крайней мере, dos атака может быть выполнена против таких баз данных. Самый простой способ защиты от такого типа нападения состоит в том, чтобы использовать апострофы вокруг числовых констант:

select * from table where id='234'. mysql автоматически преобразовывает эту строку к числу и убирает все нечисловые символы в запросе.
Проверяем:
Все web приложения:
1. Попытка вводить ‘ ‘ ‘ ‘”’ в ваших web формах. Если Вы получаете любой вид ошибки mysql, сразу же исследуйте эту проблему.

2. Попытка изменить url, добавляя %22 (‘”’), %23(‘#’), %27‘’’.

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

4. Попытка вводить символы, пробелы, и специальные символы вместо чисел в числовых полях. Ваше приложение должно удалить их перед их принятием mysql, или ваше приложение должно выдать ошибку.

5. Проверьте размеры данных перед принятием их mysql.

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

Пользователи php:
Проверьте функцию addslashes(). После php 4.0.3, доступна функция mysql_escape_string (), которая является основанной на функции с таким же именем в mysql c api.
Пользователи mysql c api:
Проверьте api запрос mysql_escape_string ().
Пользователи mysql++:
Проверьте переходы и кавычки модификаторов в потоках запросов.
Пользователи perl dbi:
Проверьте метод quote() или используйте структурный нуль (placeholders).
Пользователи java jdbc:
Используйте объект preparedstatement и placeholders.
Не передавайте незашифрованные данные по internet. Эти данные доступны для каждого, кто имеет время и способность перехватить их и использовать для собственных целей. Вместо этого, используйте зашифрованный протокол типа ssl или ssh. mysql поддерживает внутренний ssl версии 3.23.9. ssh может использоваться для создания зашифрованных туннелей.

Научитесь использовать tcpdump. В большинстве случаев, вы можете проверить, действительно ли потоки данных mysql незашифрованны, используя следующую команду:

shell> tcpdump -l -i eth0 -w - src or dst port 3306 | strings


Чтобы обсудить это в форуме, нажмите здесь.


Хостинг-источник: http://karman.com.ua
  Я обновился до PHP 4 и теперь MySQl постоянно выдает "Warning: MySQL: Unable to save result set in ..." (Предупреждение: MySQL: Не могу сохранить результат в ...). Что это?
  Я слышал, что можно получить доступ к Microsoft SQL серверу из PHP. Как?
Есть вопросы о хостинге и о сайтах?
и получи ответ от профессионалов, которые обожают помогать людям :).
Еще по теме:
  Отрицательные стороны WebMoney
  Лучший графический редактор для Web
  WebMoney намерена работать в обычном режиме ещё в течение года
  Новая реализация формы поиска от Webalta
  США безЗащитны перед стратегическими хакерскими атаками
  Обменник Web 2.0 реально?
  Практические Рекомендации по работе с контекстной рекламой
  Webmoney: Оплата за жировку
  Как использовать стиль Web 2.0, чтобы привлечь новых посетителей на свой сайт.
  Потеря веса Для Web-мастеров
  Как Защитить свой сайт от бана в Яндексе
  После установки поддержки разделения в MySQL, Apache выдаёт дампы сразу после загрузки libphp4.so. Можно ли это исправить?
  Клиентские библиотеки MySQL больше не включены в PHP 5, как это отразится на мне? Могу ли я всё так же использовать MySQL c PHP? Я пытаюсь работать с MySQL и получаю ошибки "function undefined"

© СПД Праведно-Счастливый Аладдин Ярославович, 2004-2008. Все права защищены. При цитировании материалов ссылка на www.karman.com.ua обязательна. Редакция "Кармана" может не разделять точку зрения авторов статей, сообщений и ответственности за их содержание не несет.

Быстрый переход к содержимому сайта Karman.com.ua:
Новости, советы, углубленные знания, знания для новичков, законодательство, интересные скрипты, фотогалереи, отчеты, статьи о хостинге: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24
Часто задаваемые общие вопросы о хостинге, про FTP, PHPMyAdmin и MySQL, CPanel, Предустановленные скрипты, WHM, Cron, .htaccess, SSH, Паролирование директорий, О доменах, о работе с сайтом, о Раскрутке сайта, об Электронной почте, про Основы web-программирования: 0, 1
Энциклопедия основных терминов хостинга, программного обеспечения, железной стороны хостинга, технологий, электронной почты и доменов: 0, 1, 2, 3, 4, 5, 6
Сайты о хостинге (форумы, хостинг-провайдеры, студии веб-дизайна, домен-регистраторы, инструментарии в помощь вебмастеру): 0, 1, 2

Rambler's Top100