安全地从Delphi7动态加密和压缩FirebirdSQL 2.5备份

安全地从Delphi7动态加密和压缩FirebirdSQL 2.5备份,delphi,encryption,backup,firebird,firebird2.5,Delphi,Encryption,Backup,Firebird,Firebird2.5,我们需要保护客户数据,并在Delphi 7中使用FirebirdSQL 2.5(.8)。 此外,在“辅助”PC上定期备份也很重要,如果“主”出现故障,则在笔驱动器上定期备份也很重要 为此,我们使用了方法,使用stdin/out调用Gbak.exe和7z.exe。 意识到这是一个坏主意,因为在过程中很容易看到添加到命令行的参数(密码),即使使用简单的任务管理器也是如此 有更安全的方法吗? (使用标准的Interbase componenst或UIB)升级到Firebird 3,增加了功能。如果您不

我们需要保护客户数据,并在Delphi 7中使用FirebirdSQL 2.5(.8)。
此外,在“辅助”PC上定期备份也很重要,如果“主”出现故障,则在笔驱动器上定期备份也很重要

为此,我们使用了方法,使用stdin/out调用Gbak.exe和7z.exe。
意识到这是一个坏主意,因为在过程中很容易看到添加到命令行的参数(密码),即使使用简单的任务管理器也是如此

有更安全的方法吗?

(使用标准的Interbase componenst或UIB)

升级到Firebird 3,增加了功能。如果您不想要或不能,我相信您可以使用STDOUT选项从应用程序中运行该工具,但您可以在应用程序中读取该输出,并通过某种加密库动态加密这些输入,而不是使用7-zip进行压缩


我相信您可能会发现许多关于如何在这里()运行应用程序并读取其标准输出的示例,因此剩下的可能是关于寻找一种动态流加密的方法。或者只是在一个流中捕获STDOUT,然后在另一个流中进行加密。

升级到Firebird 3,这增加了功能。如果您不想要或不能,我相信您可以使用STDOUT选项从应用程序中运行该工具,但您可以在应用程序中读取该输出,并通过某种加密库动态加密这些输入,而不是使用7-zip进行压缩


我相信您可能会发现许多关于如何在这里()运行应用程序并读取其标准输出的示例,因此剩下的可能是关于寻找一种动态流加密的方法。或者只是在一个流中捕获STDOUT,然后在另一个流中加密。

SQL.ru论坛上的Firebird家伙说,实际上可以使用服务API远程获取备份流。 但这并不意味着IBX、UIB或任何其他库都会支持它。也许是的,也许不是

他们建议阅读Firebird 2.5.2的发行说明或Firebird 2.5.2+安装的doc\README.services\u extension.txt文件的第4部分

以下是后者的一个小摘录:

使用此功能的最简单方法是fbsvcmgr。备份数据库 大致运行以下各项:

fbsvcmgr远程主机:服务\u管理器-用户sysdba-密码XXX操作\u备份-dbname some.fdb-bkp\u文件stdout>some.fbk

要恢复它:


fbsvcmgr-remotehost:service_mgr-user sysdba-password XXX action_restore-dbname some.fdb-bkp_file stdinFirebird在SQL.ru论坛上的家伙们说,实际上可以使用Services API远程获取备份流。
但这并不意味着IBX、UIB或任何其他库都会支持它。也许是的,也许不是

他们建议阅读Firebird 2.5.2的发行说明或Firebird 2.5.2+安装的doc\README.services\u extension.txt文件的第4部分

以下是后者的一个小摘录:

使用此功能的最简单方法是fbsvcmgr。备份数据库 大致运行以下各项:

fbsvcmgr远程主机:服务\u管理器-用户sysdba-密码XXX操作\u备份-dbname some.fdb-bkp\u文件stdout>some.fbk

要恢复它:


fbsvcmgr remotehost:service_mgr-user sysdba-password XXX action_restore-dbname some.fdb-bkp_文件stdin Stackoverflow用于。关于通用计算硬件和软件的问题对于堆栈溢出来说是无关紧要的,除非它们直接涉及主要用于编程的工具。您可能可以获得有关的帮助。@James,我不相信您可以启动一个不可见的流程,例如process Explorer。问题是如何消除7-zip工具的输入密码。可能的解决方法是将标准输出发送到您的应用程序,并在那里自行加密(因为7-zip工具似乎不允许您输入哈希密码)。@Victoria:同意,但您可以指定一个文件名或其他指向敏感信息的资源名,而不是将敏感信息直接放在命令行上。无论如何,超级用户是回答这些问题的正确地点。@James,我不同意。可能是数据库管理员,但仍然是。问题或多或少是,如何消除在命令行上以明文插入密码,以及如何消除7-zip工具。甚至可能IBX或UIB组件也提供了备份到流的方法(这才是真正的解决方案)。我稍后会检查的。@Arioch,这正是我在下面的回答中所说的。Stackoverflow是为。关于通用计算硬件和软件的问题对于堆栈溢出来说是无关紧要的,除非它们直接涉及主要用于编程的工具。您可能可以获得有关的帮助。@James,我不相信您可以启动一个不可见的流程,例如process Explorer。问题是如何消除7-zip工具的输入密码。可能的解决方法是将标准输出发送到您的应用程序,并在那里自行加密(因为7-zip工具似乎不允许您输入哈希密码)。@Victoria:同意,但您可以指定一个文件名或其他指向敏感信息的资源名,而不是将敏感信息直接放在命令行上。无论如何,超级用户是回答这些问题的正确地点。@James,我不同意。可能是数据库管理员,但仍然是。问题或多或少是,如何消除在命令行上以明文插入密码,以及如何消除7-zip工具。甚至可能IBX或UIB组件也提供了备份到流的方法(这才是真正的解决方案)。稍后我将对此进行检查。@Arioch,这正是我在下面的回答中所说的。服务API提供了GBK流,可以在写入之前进行转换(如加密、压缩或其他)