【问题标题】:MySQLdb security when connecting to a remote server?连接到远程服务器时的 MySQLdb 安全性?
【发布时间】:2013-02-18 02:14:18
【问题描述】:
    db = MySQLdb.connect(host ="host",
        user="user",
        passwd="pass",
        db="dbname")
    q = db.cursor()

所以,这是我的代码块,我只是想知道,逆向工程有多容易,mysqldb 是否通过明文发送身份验证?

我正在创建一个通过 Internet 连接到 mySQL 服务器的程序,有人可以获取我的凭据吗?

有人可以获取我的服务器登录详细信息吗?

【问题讨论】:

  • 您可以在 MySQL 文档中阅读此部分,其中说明了它使用的身份验证机制:dev.mysql.com/doc/internals/en/…。通常,Web 服务器与 MySQL 服务器背靠背通信(调用本地 MySQL 服务器,或位于私有网络中的 MySQL 服务器),因此假设您的服务器的网络扇区是安全的,安全性不应该成为问题。跨度>
  • 它连接到远程mysql服务器...没有websever,它是一个独立的SQL服务器。
  • 好的,我认为我有一个解决方法,这个应用程序只使用SELECT语句,我只是要在SQL服务器上设置权限,所以用户连接只能运行 SELECT,因此无法编辑数据。
  • 重新考虑您的网络架构。远程数据库服务器增加了太多的流量开销,因此会降低响应时间。如果你想要响应式程序,不建议使用远程数据库服务器。

标签: python security mysql-python


【解决方案1】:

可以将 MySQL 服务器配置为使用 SSL 来保护连接。请参阅here 了解使用带有 SSL 连接的 MySQLdb 的示例,并参阅here 了解有关配置服务器的一些信息。

【讨论】:

    【解决方案2】:

    在上面的示例中,用户名、密码和所有其他数据将以明文形式发送。

    这里有两个相关的问题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-ca=ca-cert.pem 来测试您要连接的服务器是否支持 SSL。 ca-cert.pem:在服务器端和客户端将其用作--ssl-ca 的参数。 (如果使用CA证书,两边必须相同。)

    MySQL SSL Example 描述了从设置 MySQL 到使用 SSL 连接的过程。

    【讨论】:

      【解决方案3】:

      密码不应在代码中硬编码。 Python 有一个 config.py 模块的约定,您可以在其中将这些值与其他代码分开。

      请看这里:

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

      上面已经回答了有关 SSL 以防止泄露的问题。

      法比奥 @fcerullo

      【讨论】:

        猜你喜欢
        • 2020-01-09
        • 2011-08-04
        • 2015-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-08
        • 1970-01-01
        相关资源
        最近更新 更多