如何在java中加密敏感的SQL信息

时间:2012-07-02 12:10:49

标签: java sql oracle

让我说我想在我的Java应用程序中连接到oracle数据库,我将不得不写下jdbc url并为该数据库添加用户名和密码,我不知道如何在没有源代码的情况下破解此密码该程序,但我必须加密?有没有办法加密?那么sql注入呢?

3 个答案:

答案 0 :(得分:3)

你并没有真正提供足够的信息来了解你的全部情况,但我会尝试分解一些你可能想知道的一般事情。首先,需要为db驱动程序提供未加密的用户名/密码,因此如果您担心在内存中未加密的信息,它将无法真正发挥作用。通常,访问数据库的方法通常比尝试扫描内存中的用户名/密码字符串更简单。

如果您正在制作一个应用程序,您将分发字节代码(.class文件或.jar文件),那么人们可以在技术上通过该字节代码并查找硬编码字符串,例如用户名/ password(但即使你有字符串,也可能很难确定它们究竟是什么)。

如果您正在制作一个将在Web服务器上运行的应用程序,那么无论如何都不应该访问您的字节代码或内存,因此它实际上是不可能的(除非它们已经被黑了你的服务器在某种程度上可以获得这些信息。您可能希望将属性文件中的数据库连接信息外部化,以便管理软件的人可以轻松配置它,但根据您的要求可能并非如此。

SQL注入是一个完全不同的问题,对我来说有点太宽泛了。我建议你阅读一下处理它的方法,但很大程度上它将归结为使用预准备语句而不仅仅是执行SQL(这通常会提高你的性能)。

答案 1 :(得分:1)

我正在使用Java编写注册表单,我遇到了同样的问题。对我来说唯一有意义的是使用php表单进行注册,这样他们就不会访问你的数据库而只能通过服务器进行通信。而不是给用户数据库的权限我不知何故设想一种单向加密方法,只有在用户输入密码后对密码进行散列后才能将密码与哈希匹配。通过对黑客的一些理解,我觉得用户可以访问的任何信息都是安全漏洞。主持人多次说过不要在源代码中以明文形式存储密码。 SQL提供了一些提供有限数据库权限的方法,您可以根据需要删除信息。

下面是一个我会信任的链接,但它基本上留给自己一个文件记录,其中哈希必须从隐藏在某处的zip文件中提取,在auth期间检索并且可以添加到网站

https://www.pkware.com/software/developer-tools/sdk/toolkit-for-java

答案 2 :(得分:0)

您可以encrypt密码并使用AES algorithm将其存储在数据库或安全区域中。构建JDBC URL时,请检索此信息并decrypt。 可以从此链接获得更多信息: Java 256-bit AES Password-Based Encryption

SQL注入是代码中存在的另一种vulnerabilities,因为没有对用于构造SQL语句的数据进行验证。