对于连接到mysql数据库的应用程序,通常凭证存储在属性文件中,例如具有用户名和密码明文的jdbc.properties。
有这样一个非常安全的方法吗? 当然,我可以限制访问这个文件,使其隐藏等。但是有没有替代方法来连接到数据库或方法连接到数据库比属性文件的方法?
一种select是将这些敏感信息以encryption方式存储在另一个数据库中。 然后,应用程序可以连接到这个数据库(使用属性文件的方式),然后解密敏感信息(而不是从属性文件中读取),并使用它来启动与应用程序数据库的连接。
还有其他的方法吗? 请分享您的经验和想法。 我正在使用Linux机器来托pipeMySQL。
我认为这里的基本问题就是你要保护的东西。
你可以很明显的确定你的数据库服务器对于接受的连接是非常有select性的,这将为你通过其他主机访问数据提供保护。
您可以select连接到服务器(请参阅mysql手册了解详细信息)。
您可以encryption属性文件中的数据,并使用硬编码到您的应用程序的源代码中的解密密钥。
但最终,如果有人能够访问应用程序运行的服务器,则可以访问数据库。
如果应用程序需要访问数据库,而是连接到另一个数据库的密钥,使用属性文件进行身份validation,那么安全性会增加多less? 链和链接一样强大,这里的链接是将密码存储在属性文件中。 你可以任意深入地嵌套这样的数据库,但是最后所有的应用程序都必须有一些对链中最近的数据库进行authentication的方法。 隐藏文件不是安全的, 这是'混淆安全',这是不安全的。 你可以(也应该)使得包含密码的属性文件的所有者和权限设置正确,只允许访问相关的应用程序。 您可以以不同的用户身份运行该应用程序,使属性文件仅对该用户可见。 还要在数据库中设置权限来locking用户访问数据库的能力,以尽量减less任何安全漏洞的影响。 设置权限的目的是:一是阻止未经授权的对属性文件和数据库的访问; 其次,要尽量减less这种违规行为的影响。