我通常会在.properties文件或.xml文件中保存数据库连接信息,包括用户名/密码。有没有办法让它更安全?我的意思是在目录级别,有人可以轻松编辑文件并连接到数据库。
感谢
我使用spring framework spring security和jsf 2工具。我实际上正在寻找除了处理文件级别授权之外的解决方案。可以在linux和windows上授予用户访问权限。添加一些paranioa我甚至想将其隐藏起来用户。 我不希望授权用户以纯文本格式查看用户名/密码信息。
感谢回复
答案 0 :(得分:1)
您可以加密这些文件,然后使用它们。虽然它会增加加密/解密的开销。
答案 1 :(得分:1)
您可以为未经授权的用户设置无法访问的连接字符串。这是一个简单的权限问题,只需撤销对配置文件的所有不必要的权限即可。但是,您无法保护连接字符串不受授权用户的影响,并且始终包括本地Administrators组的所有成员以及运行该应用程序的用户。
也有加密连接字符串的方法,因为配置支持加密,请参阅Encrypting and Decrypting Configuration Sections。但这是一种防止意外媒体丢失的方法(你的硬盘驱动器在跳蚤市场中出现)。加密技术不会为文件级授权添加任何真正的保护,因为应用程序本身需要解密配置</ em>。我强调这一点,因为像你这样的问题实际上意味着DRM执行问题,如何确保使用该应用程序的用户不会看到或修改应用程序的某些部分。
有人可以轻松编辑文件并连接到数据库
我希望你的意思是'某人可以轻松地使应用程序连接到不同的数据库',并且应该对于授权用户来说很容易。如果您正在尝试隐藏您正在连接的数据库,那么您真的会咆哮错误的树,因为这在很多其他方面都是可见的。
答案 2 :(得分:0)
看一下here看起来就像我在这里给出的链接一样。
<connectionStrings configProtectionProvider="RsaProtectedConfigurationProvider">
<EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Element"
xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<EncryptedKey xmlns="http://www.w3.org/2001/04/xmlenc#">
<EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" />
<KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#">
<KeyName>Rsa Key</KeyName>
</KeyInfo>
<CipherData>
<CipherValue>R7cyuRk+SXJoimz7wlOpJr/YLeADGnwJVcmElHbrG/B5dDTE4C9rzSmmTsbJ9Xcl2oDQt1qYma9L7pzQsQQYqLrkajqJ4i6ZQH1cmiot8ja7Vh+yItes7TRU1AoXN9T0mbX5H1Axm0O3X/285/MdXXTUlPkDMAZXmzNVeEJHSCE=</CipherValue>
</CipherData>
</EncryptedKey>
</KeyInfo>
<CipherData>
<CipherValue>d2++QtjcVwIkJLsye+dNJbCveORxeWiVSJIbcQQqAFofhay1wMci8FFlbQWttiRYFcvxrmVfNSxoZV8GjfPtppiodhOzQZ+0/QIFiU9Cifqh/T/7JyFkFSn13bTKjbYmHObKAzZ+Eg6gCXBxsVErzH9GRphlsz5ru1BytFYxo/lUGRvZfpLHLYWRuFyLXnxNoAGfL1mpQM7M46x5YWRMsNsNEKTo/PU9/Jvnh/lT+GlcgCs2JRpyzSfKE7zSJH+TpIRtd86PwQ5HG3Pd2frYdYw0rmlmlI9D</CipherValue>
</CipherData>
</EncryptedData>
</connectionStrings>