2013-02-18 2 views
4
db = MySQLdb.connect(host ="host", 
     user="user", 
     passwd="pass", 
     db="dbname") 
    q = db.cursor() 

Итак, это мой кодовый блок, мне просто интересно, как легко было бы это сделать, чтобы перепроектировать, и действительно ли mysqldb отправляет аутентификации поверх открытого текста?Безопасность MySQLdb при подключении к удаленному серверу?

Я создаю программу, которая подключается к серверу mySQL через Интернет, сможет ли кто-нибудь получить мои учетные данные?

Может кто-нибудь сможет получить данные для входа в мой сервер?

+0

Вы можете прочитать этот раздел в MySQL документации, которая гласит механизм аутентификации он использует: http://dev.mysql.com/doc/internals/en/connection-phase.html# packet-Protocol :: AuthSwitchRequest. Обычно веб-сервер обменивается данными с сервером MySQL, обращаясь к нему (вызывая локальный сервер MySQL или сервер MySQL, расположенный в частной сети), поэтому безопасность не должна вызывать беспокойства, предполагая, что сетевой сектор вашего сервера защищен. – Raptor

+0

Он подключается к удаленному серверу mysql ... Нет websever, это автономный SQL-сервер. – AB49K

+1

ОК, я * думаю * У меня есть обходное решение, это приложение использует только инструкцию SELECT, я просто собираюсь установить разрешения на SQL-сервере, поэтому подключение пользователя может запускать только SELECT, что делает невозможным изм. – AB49K

ответ

1

Сервер MySQL может быть настроен на использование SSL для защиты соединения. См. here для примера использования MySQLdb с SSL-соединением и here для получения информации о настройке сервера.

1

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

Вот два взаимосвязанных вопроса Python MySQLDB SSL Connection, CA SSL parameter for Python MySQLdb not working, but key does?

Если у вас есть доступ к изменению настройки сервера MySQL, мы можем помочь настроить SSL.

MySQL поддерживает зашифрованные соединения. Сервер MySQL, к которому вы подключаетесь, должен быть настроен на использование SSL, и клиент должен добавить параметр SSL при подключении.

Using SSL connections

shell> mysql --ssl-ca=ca-cert.pem ... 

Вы можете проверить, если сервер вы подключаетесь к опорам протоколом SSL мой добавления --ssl-ca=ca-cert.pem. ca-cert.pem: используйте это как аргумент --ssl-ca на стороне сервера и клиента. (Сертификат CA, если он используется, должен быть одним и тем же с обеих сторон.)

MySQL SSL Example описывает процесс настройки MySQL и подключения к SSL.

0

Пароли не должны быть жестко закодированы в коде. У Python есть соглашение с модулем config.py, где вы можете сохранить такие значения отдельно от остальной части вашего кода.

Пожалуйста, смотрите здесь:

http://dev.mysql.com/doc/refman/5.5/en/connector-python-coding.html

Вопрос о SSL для предотвращения раскрытия информации был дан ответ выше.

Фабио @fcerullo

Смежные вопросы