|
Программирование >> Создание клиентов mysql
клеена к монитору, что нередко происходит, то любой сможет ствие хозяина пароля зарегистрироваться в системе под его именем. Многократное использование паролей тоже нежелательно, так как от взлома одной системы не должныстрадать другие системы, даже если пользователям лень запоминать лишние пароли. Меры предосторожности лишними не бывают! Выработайте политику выбора надлежащих паролей. Пароли, представляющие собой обычные слова, элементарно взламываются специальными программами методом последовательного перебора. Самыми эффективными являются случайные комбинации букв, чисел и знаков пунктуации, но такие пароли трудно запоминать. Существует популярная методика выбора паролей. Ее суть заключается в том, что пароль составляется из первых букв какой-нибудь легко запоминающейся фразы. Например, пароль tlotr-J.T. (1955) соответствует фразе The Lord ofthe Rings -JohnTolkien (1955) . Такой пароль содержит смесь строчных и прописных букв, чисел и знаков пунктуации и имеет максимальную длину - 16 символов. Никогда не задавайте пароль в командной строке. Пусть клиентская программа сама попросит ввести его. Команды, вводимые в интерпретаторе, видны любому пользователю, просматривающему список процессов. Функции клиентской библиотеки MySQL стараются максимально быстро очищать командную строку, но все равно в течение короткого промежутка времени она остается общедоступной. Пароли можно также хранить в личном конфигурационном файле (см. главу 14, Утилиты командной строки ). Бывают ситуации, когда пароли приходится хранить в исходном виде. Один из примеров - Web-приложение. Программа должна регистрироваться на сервере, поэтому она хранит строку пароля, передаваемую клиентской библиотеке. Утилита strings, имеющаяся в большинстве версий UNIX, позволяет легко просматривать текстовые строки, включенные в исполняемый файл. Ограничьте доступ к таким файлам. Убедитесь, что файл, в котором содержится пароль, не находится в каталогах, доступных Web-серверу. Если Web-приложение выполняется от имени конкретного пользователя, поместите пароль в конфигурационный файл. Для особо недоверчивых существует такое средство, как опция -secure демона mysqld. При ее наличии демон выполняет обратное преобразование доменных имен, проверяя совпадение IP-адресов. Например, если IP-адресу 192.168.100.128 соответствует имя saf е. your, net, но поиск этого имени в DNS оканчивается неудачей или оказывается, что за этим именем закреплен другой адрес, то программа MySQL отказывается устанавливать соединение. Можно также воспользоваться опцией -slcip-name-resolve, которая вообще отключит процедуру поиска доменных имен. В этом случае в столбцах Host таблиц привилегий будут разрешены только IP-адреса. Если в системе поддерживаются UNIX-сокеты и работа ведется с базой данных, расположенной на локальномузле, задайте опцию -skip-networking. Она отключит поддержку Internet-соединений. Соединения можно будет устанавливать только через сокет. Не стоит слепо доверять данным, поступающим из внешнего мира. Пользователи могут передавать цепочки байтов, нарушающие работоспособность системы или приводящие к неожиданным результатам. Представим себе приложение, заносящее в базу данных запись с помощью инструкции INSERT, аргумент для которой предоставляет ся пользователем. Если в состав аргумента входит одинарная кавычка, она послужит сигналом к завершению строкового литерала. Это открывает возможность для видоизменения инструкции. Чтобы этого избежать, защищайте специальные символы от Обеспечение безопасности 495 интерпретации, например с помощью или пользуйтесь параметризованными запросами, как в MySQL++. Нельзя защитить от интерпретации специальные символы числовых литералов, но можно удалить их в приложении, выполнив операцию приведения типов, или взять в одинарные кавычки, чтобы позволить программе MySQL самой осуществить нужное преобразование. Если числовой литерал заключен в одинарные кавычки, программа преобразует строку в число в случае необходимости. Безопасность можно обеспечивать на физическом уровне. Очень часто под сервер баз данных выделяют отдельный компьютер. В этом случае можно будет запретить все подключения к серверу, кроме тех, которые устанавливаются через порт 3306, контролируемый программой MySQL. Еще более радикальное средство - создание двух сетей. В такой схеме общедоступный компьютер принимает запросы от внешних пользователей через один сетевой интерфейс, а другой интерфейс служит для подключения к локальной сети, в которой работает сервер баз данных. В результате сервер освобождается от обслуживания внешнего трафика. Рассмотрим рис. 27.2. Пользователи запрашивают HTML-страницы у Web-сервера, выполняю щегося на общедоступном компьютере. В ответ на это Web-приложение, написанное на РНР, подключается к серверу баз данных, используя IP-адрес из частного диапазона, начинающийся на 10. Чтобы дополнительно защитить Web-сервер, можно поставить на пути во внешний мир брандмауэр. Рис. 27,2. Вынесение сервера в отдельную сеть Программа MySQL поддерживает обмен сжатыми и зашифрованными данными между клиентом и сервером. Сжатие позволяет уменьшить трафик и представить данные в более защищенном виде. Благодаря шифрованию генерируются данные, которые сможет прочитать только авторизованный получатель. Для шифрования применяется протокол SSL(SecureSockets Layer - протокол защищенныхсокетов). Как объяснялось в главе 2, Инсталляция MySQL , сервер MySQL должен выполняться от имени пользователя, учетная запись которого создана специально для этих целей. Нельзя предоставлять серверу права суперпользователя, чтобы избежать ситуации, когда из-за ошибки разработчиков MySQL злоумышленники получают возможность запускать программы на сервере. В дистрибутив MySQL входит утилита mysqld multi, позволяющая запускать несколько серверов на одном компьютере. Это обеспечивает дополнительную безопасность системы, в которой работает много пользователей. Каждый пользователь может управлять собственной базой данных, что избавляет администратора от необходимости тщательно продумывать схему передачи привилегий. Подробнее об организации многосерверной среды рассказывается в главе 29, Распределенные базы данных . ПЕРЕНОС ДАННГХ В РАЗНЫЕ СУБД В этой главе... Переключение между СУБД Устранение несовместимостей Использование режима ANSI Уникальные свойства MySQL
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |