我正在构建一个由 MySQL 服务器支持的 Django 支持的站点。这个 MySQL 服务器将从网站以外的其他来源访问,以读取和写入表数据;例如用户在本地运行的连接到数据库的程序。
目前本地运行的程序是使用 MySQL/C Connector 库直接连接到 sql server 并执行查询。在最终向公众发布的版本中,这似乎是不安全的,因为我会在代码或配置文件中将连接字符串暴露给数据库。
我正在考虑的一种替代方法是将所有查询发送到 Django 网站(使用用户的登录名和密码进行身份验证),然后该站点将代表用户清理和执行查询并将结果返回给他们。
这有很多我能想到的缺点。通过处理所有 SQL 查询,网络服务器将承受更大的负载,这可能会超出我主机的限制。此外,我必须想办法在 Python 中序列化和传输 sql 结果,然后在客户端用 C/C++ 反序列化它们。这将是需要编写和维护的大量自定义代码。
人们能想到这种方法的任何其他缺点吗?
这听起来合理吗?如果合理,任何可以减轻工作的事情;例如 Python 或 C 库来帮助开发代理接口?
如果这听起来是个坏主意,对替代解决方案的任何建议,即专门研究这种类型的代理 sql 服务器逻辑的 Python 库,一种加密 sql 连接字符串的方法,以便我可以安全地使用我当前的解决方案,等等......?
最后,这是一个有效的担忧吗?该数据库目前不包含任何关于用户的非常敏感的信息(最敏感的是他们的电子邮件和他们可能从其他来源重复使用的网站密码),但如果它不安全,将来可能会引起我的担忧。