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

所以,这是我的代码块,我只是想知道,这将是多么容易反向工程,并确实mysqldb发送认证通过明文?连接到远程服务器时的MySQLdb安全性?

我创建通过Internet连接到MySQL服务器的程序,会有人能够得到我的凭据?

会有人能够得到我的服务器的登录信息?

+0

您可以阅读MySQL的文档这一节,其中规定它使用的认证机制:http://dev.mysql.com/doc/internals/en/connection-phase.html#分组协议:: AuthSwitchRequest。通常情况下,Web服务器与MySQL服务器紧密连接(调用本地MySQL服务器或位于私有网络中的MySQL服务器),因此假设服务器的网络部分是安全的,安全性应该不成问题。 – Raptor 2013-02-18 02:20:34

+0

它连接到远程mysql服务器... 没有websever,它是一个独立的SQL服务器。 – AB49K 2013-02-18 02:25:23

+1

好吧,我*想*我有一个解决方法,这个应用程序只使用SELECT语句,我只是要在SQL服务器上设置权限,所以用户连接只能运行SELECT,因此数据不能编辑。 – AB49K 2013-02-18 02:28:55

回答

1

MySQL服务器可以配置为使用SSL来保护连接。有关配置服务器的一些信息,请参阅here以获得有关使用SSLdb连接的MySQLdb的示例和here

1

在你的榜样的用户名,密码和其他数据上面会以明文的形式发送。

这里有两个相关的问题Python MySQLDB SSL ConnectionCA 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设置MySQL并与SSL连接的过程。