从Hack中保护Delphi连接字符串

daw*_*imy 0 sql-server delphi connection-string ado

我们有一个使用tadoconnection连接sql server数据库的delphi应用程序问题是当我们在运行exe文件时打开资源黑客时它清楚地显示了连接字符串,任何人都可以连接到我们的服务器

下面显示的示例代码描述了问题 在此输入图像描述

Rem*_*eau 5

您没有使用资源黑客.如果您的字符串存储在资源中,它们将更容易查找和查看.

您正在使用内存扫描程序,它在程序运行时查看程序的原始内存.最终,您必须在内存中创建一个连接字符串以传递给数据库引擎.如果黑客可以访问应用程序及其内存,则可以使用应用程序访问其数据.一个专门用这样的访问,黑客将能够抓住这个字符串在正在使用它的时间.

但是你可以采取一些措施来使随意的黑客更加努力.

首先,不要让非管理员用户有权访问您的应用.当用户运行扫描程序应用程序时,它可能会访问由同一用户运行的其他应用程序中的内存.在不同的用户上下文或升级过程中运行您的应用.用户运行的应用程序无法访问其他用户正在运行的其他应用程序的内存,除非明确授予他们权限,或者他/她是管理员.如果黑客有权访问您的应用,则所有投注均已关闭.

此外,将字符串分解为必要时必须连接的较小子字符串.动态构建连接字符串.这样,如果黑客尝试在磁盘上查看EXE文件本身,则子串不会存储在一个地方.

并且无论如何,请不要在应用程序代码中存储敏感凭据.将它们存储在外部,并保持加密.仅在绝对需要时将它们检索到内存,并在使用SecureZeroMemory()完毕后使用它安全地销毁该内存的内容.如果您需要在内存中保留凭据或连接字符串超过几毫秒,请考虑CryptProtectMemory()在不主动使用时加密该内存.

将连接字符串拼凑起来所需的工作量越多,休闲黑客也必须做的工作量越多.但是一个专职的黑客只会等到你完成所有工作,然后在使用它的时候从内存中拔出最后一个字符串,所以你必须尽你所能来防止首先访问内存.