我有一个客户端-服务器应用程序,它在互联网上使用 firebird 服务器 2.5。 我遇到了安全访问 FB 数据库的问题,作为第一个方法,我试图通过在应用程序中集成隧道解决方案(更准确地说是 STunnel 软件)来解决这个问题。但是,这种方法有很多方面的问题: - 这会在客户端/服务器端增加更多的资源消耗(CPU、内存、线程), - 软件部署成为一个严重的问题,因为 STunnel 软件被编写为 WinNT 服务,而不是 DLL 或组件(WinNT 服务需要管理员权限才能安装) 我的客户端应用程序无需安装即可运行!
所以,我决定不畏艰险(或者当我们谈论 Firebird 时,不畏惧鸟的羽毛)。我已经下载了 Firebird 2.5 源代码,并直接在他的低级通信层(INET 套接字层)中注入(inject)了安全隧道化代码。 现在,加密/解密由 firebird 引擎直接为每个 TCP/IP 数据包完成。
与外部隧道化相比,您如何看待这种方法?
最佳答案
我会建议将双方的数据交换包装在 SSL/TLS 流中。这是经过验证的标准。 虽然使用静态 key 的自定义实现可能不安全。
例如,具有常量 IV 的 CTR 模式可以揭示很多信息,因为它只加密增量向量并将其与数据进行异或运算,因此对两个加密数据包进行异或运算将显示未加密数据包的异或版本。
关于database - 通过互联网保护与 firebird 的连接的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13007505/