首页 > 解决方案 > 使用 Django 的 PostgreSQL Db 流量加密

问题描述

我将 Django 3.08 与 PostgreSQL 12 远程服务器一起使用。我已经搜索了 Postgres 和 Django 的文档,但找不到关于 Django 如何/是否加密我的应用程序和 dB 之间的流量的讨论。

在我看来,默认情况下,PostgreSQL 中的流量是根据 PostgreSQL 中的设置使用 md5 加密进行加密的,并通过 tcp 通过端口 5432 发送。据我了解,md5 已不再是足够的加密。但是,自 PostgreSQL 10 起,PostgreSQL 就支持 scram-Sha-256。有没有人知道或参考我可以在哪里设置我的应用程序以使用更强的加密,或者如果我将网站上的所有流量都设置为使用 https在 settings.py 文件中。或者,如果我只是更改 PostgreSQL 中的设置,Django 会使用 scram-Sha-256 吗?

标签: djangopostgresqlencryption

解决方案


md5 和 scram-sha-256 用于基于密码的身份验证,而不是用于加密。虽然密码交换本身无法以明文形式被窃听连接的人读取,但如果会话被劫持,其余数据(查询和结果)仍然是可读的,并且可以更改。

加密是通过 ssl(常见)实现的,或者在最近的版本中,可能是通过与 GSSAPI 身份验证相关的加密(我认为这种情况很少见)。

参考当然是服务器和客户端的文档(据我所知,Django 使用 psycopg2,而后者又使用 libpq)


推荐阅读