我正在构建一个 JavaFX 2.0 独立应用程序(它将作为 .exe 分发)并打开一个到 MongoDB 实例的连接。该连接只是使用 Mongo 有线协议的标准 Mongo 连接。
Mongo 有线协议是否足够安全,或者用户可以检查它以查看来回传递的数据吗?
Mongo 数据库连接将能够在将来的某个时候使用 SSL,但这还不可用。
相反,我应该使用 REST Web 服务通过 SSL 进行数据访问吗?直接的数据库连接要快得多,所以如果我能保留它会很棒,但也没有大的安全问题。
我正在构建一个 JavaFX 2.0 独立应用程序(它将作为 .exe 分发)并打开一个到 MongoDB 实例的连接。该连接只是使用 Mongo 有线协议的标准 Mongo 连接。
Mongo 有线协议是否足够安全,或者用户可以检查它以查看来回传递的数据吗?
Mongo 数据库连接将能够在将来的某个时候使用 SSL,但这还不可用。
相反,我应该使用 REST Web 服务通过 SSL 进行数据访问吗?直接的数据库连接要快得多,所以如果我能保留它会很棒,但也没有大的安全问题。
仅供您参考。在客户端应用程序中提供直接数据库连接是个坏主意。构建一个允许正确身份验证和输入验证的 RESTful 接口。这将使您可以更严格地控制应用程序可以访问的内容。
问题是目前 MongoDB 不提供 SSL 封装。这意味着有线协议本身可以被窃听(通过协议发送的数据被暴露)。因此,如果您在非本地(因此通过网络)运行此协议,那么是的,它是不安全的,但不是因为协议本身不安全,而是因为由于缺乏封装,实现目前无法保证机密性或完整性。
但是,您可以通过自己封装协议来解决此问题。如果协议不提供 SSL,您首先创建一个隧道并通过该隧道发送协议。例如,您在您的网络服务器和 MongoDB 之间建立了一个加密的 VPN,并通过这个 VPN 发送有线协议连接(请注意,您应该使用安全的 VPN 协议)。最好这样实现,以便您拥有端点加密。
这将禁止窃听者嗅探您的电线连接。
Mongo 数据库连接将能够在将来的某个时候使用 SSL,但这还不可用。
写这篇文章有一个更新的参考。
来自https://docs.mongodb.org/manual/tutorial/configure-ssl/
3.0 版中的新功能:大多数 MongoDB 发行版现在都包含对 SSL 的支持。
...
MongoDB 的某些发行版不包含对 SSL 的支持。要使用 SSL,请务必选择支持 SSL 的软件包。
您可以从此处检查您的操作系统/发行版的 MongoDB 是否支持 SSL 。