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



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

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

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

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

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

我正在

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

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

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

您可以使用 AES algorithm encrypt密码并将其存储在数据库或安全区域中。构造JDBC URL时,检索此信息并decrypt它。可以从此链接获得更多信息:Java 256 位 AES 基于密码的加密

SQL

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

最新更新