连接远程服务器时的MySQLdb安全性?

5
    db = MySQLdb.connect(host ="host",
        user="user",
        passwd="pass",
        db="dbname")
    q = db.cursor()

这是我的代码块,我想知道它有多容易被逆向工程,mysqldb是否会以明文发送认证信息?

我正在创建一个连接到互联网上的 MySQL 服务器的程序,是否有人能够获取我的凭据?

是否有人能够获取我的服务器登录详细信息?


您可以在MySQL文档中阅读此部分,其中说明了其使用的身份验证机制:http://dev.mysql.com/doc/internals/en/connection-phase.html#packet-Protocol::AuthSwitchRequest。通常,Web服务器与MySQL服务器进行背靠背通信(调用本地MySQL服务器或位于私有网络中的MySQL服务器),因此安全性不应成为问题,假设您的服务器的网络区域已受到保护。 - Raptor
它连接到远程MySQL服务器...没有Web服务器,它是一个独立的SQL服务器。 - AB49K
1
好的,我认为我有一个解决方法,这个应用程序只使用SELECT语句,我将在SQL服务器上设置权限,使连接的用户只能运行SELECT,从而使数据无法被编辑。 - AB49K
重新考虑您的网络架构。远程数据库服务器会给流量增加太多负担,因此会对响应时间造成惩罚。如果您想要一个响应快速的程序,不建议使用远程数据库服务器。 - Raptor
3个回答

1
MySQL服务器可以配置使用SSL来保护连接。请参见这里以获取使用带有SSL连接的MySQLdb的示例,以及这里以获取有关配置服务器的一些信息。

1
在您上面的示例中,用户名、密码和所有其他数据都将以明文形式发送。
这里有两个相关的问题Python MySQLDB SSL ConnectionCA SSL parameter for Python MySQLdb not working, but key does? 如果您可以更改配置MySQL服务器,则我们可以帮助配置SSL。
MySQL支持加密连接。您连接的MySQL服务器必须配置为使用SSL,并且客户端在连接时必须添加SSL参数。 使用SSL连接
shell> mysql --ssl-ca=ca-cert.pem ...

你可以通过添加--ssl-ca=ca-cert.pem来测试你所连接的服务器是否支持SSL。 ca-cert.pem: 在服务器和客户端上使用--ssl-ca的参数。(如果使用了CA证书,则必须在双方都相同。) MySQL SSL示例描述了设置MySQL并使用SSL进行连接的过程。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接