0

假设我想在我的 Java 应用程序中连接到 oracle 数据库,我将不得不写下 jdbc url 并输入该数据库的用户名和密码,如果没有程序的源,我不知道如何破解这个密码,但我必须加密吗?有没有办法加密?那么sql注入呢?

4

3 回答 3

3

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

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

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

SQL 注入是一个完全不同的问题,对于我来说有点过于宽泛,无法在此处讨论。我建议您阅读处理它的方法,但很大程度上归结为使用准备好的语句,而不仅仅是执行 SQL(这通常也会提高您的性能)。

于 2012-07-02T12:22:31.360 回答
1

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

下面是一个我有点信任的链接,但它基本上给自己留下了一个纸质痕迹,其中必须从隐藏在某处的 zip 文件中提取哈希,在身份验证期间检索它,然后可以将其添加到网站

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

于 2015-12-22T05:26:34.400 回答
0

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

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

于 2012-07-02T12:21:55.960 回答