3

好的,我提前为这个问题道歉,因为它非常广泛。

基本上,我正在开发一个系统,涉及:

  1. 用户可以注册帐户的网站。此过程将在服务器上为该帐户创建一个新数据库。
  2. 用 Java 编写的客户端外部应用程序。这将访问数据库中的数据,以便为用户执行有用的操作。
  3. 在第一点创建的数据库本身。

我的问题是关于应该实施哪些安全措施以保证数据库的安全以及如何安全地传输数据。

我的担忧是:

  1. MySQL 数据库实际上是如何保护的?在注册帐户时创建数据库时,是否需要为该数据库设置密码?这会加密数据库吗?这足以阻止某人访问数据吗?
  2. Java 很容易反编译。假设我要将帐户数据库的登录数据存储在主数据库中,我如何保护该数据库并以一种不需要我硬编码连接到该数据库的详细信息的方式从我的应用程序连接到它在应用程序中。我相信这在编译为本机代码的语言中也一定是一个问题,因为有人可以在应用程序运行时执行内存转储来获取这些变量(我认为)。
  3. 从服务器向客户端发送和接收数据时,反之亦然,如何防止有人通过网络窃听并获取数据(无论是登录凭据还是数据库中的其他数据)。我认为这就是 SSL 的用途,但这就是我需要使用的全部内容吗?

这些问题的一个可能答案是在 Java 客户端应用程序和数据库之间使用中间人服务,这与在 Javascript 和 MySQL 数据库之间使用 PHP 的方式非常相似(尽管在这种情况下 PHP 是必需的) . 我假设这个中间人服务将包含主数据库等的登录凭据,并将包含它自己的方法来防止未经授权的访问。如果这是正确的,我将如何设置这样的服务?是否可以利用 Java 应用程序中的 PHP 脚本来传输数据?

我希望我的问题是有道理的,不是太模棱两可。在此先感谢您的时间。

4

3 回答 3

4

MySQL 数据库实际上是如何保护的?在注册帐户时创建数据库时,是否需要为该数据库设置密码?这会加密数据库吗?这足以阻止某人访问数据吗?

  1. 使用帐户名和密码,以及“授予”不同用户的特定数据库的不同访问权限。

  2. 密码与用户帐户相关联,而不是与数据库相关联。

  3. MySQL 数据库未加密。

  4. 是的......虽然如果不受信任的人可以获得对数据库本身或托管数据库的系统的管理员控制权,那么所有的赌注都没有了。

Java 很容易反编译。假设我要将帐户数据库的登录数据存储在主数据库中,我如何保护该数据库并以一种不需要我硬编码连接到该数据库的详细信息的方式从我的应用程序连接到它在应用程序中。

一种常见的方法是将连接详细信息和/或帐户凭据放入应用程序在启动时加载的属性文件中。但是,我认为您真正的问题是您希望允许在不受信任的机器上运行的应用程序更新数据库。一个更明智的解决方案是在适当安全的机器上运行受信任的服务,让不受信任的机器与受信任的服务而不是直接与数据库对话。

我相信这在编译为本机代码的语言中也一定是一个问题,因为有人可以在应用程序运行时执行内存转储来获取这些变量(我认为)。

那是对的。

从服务器向客户端发送和接收数据时,反之亦然,如何防止有人通过网络窃听并获取数据(无论是登录凭据还是数据库中的其他数据)。我认为这就是 SSL 的用途,但这就是我需要使用的全部内容吗?

SSL 足以保护通过网络发送的数据(或凭据)。

中间人攻击的情况很模糊,尤其是在涉及 Web 浏览器以及是否应该真正信任受信任的根时。但是,如果我理解正确阅读的内容,那么有一种使用 SSL 的方法应该不受 MITM 的影响。基本上,您需要为所有参与者(客户端、服务器)生成单独的 SSL 证书,并使用带外分发机制将它们分发给所有人;即不是通过互联网。然后,您只接受来自具有已知证书的各方的 SSL 连接。并确保您使用 TLS 1.1 或 1.2。

于 2012-12-10T13:16:21.980 回答
2

我看到了一些可能性——

  1. 使用 jBoss SX 框架
  2. 使用 EJB 是另一回事,它提供了所需的抽象层。
  3. JCA 组件可以用在中间人组件上

最后,还可以通过一些可用的工具(如 sqlMAP)访问 SQL 注入。

于 2012-12-10T13:29:32.887 回答
1

您假设您的客户端应用程序永远不应该存储数据库身份验证信息是正确的。反编译 Java 应用程序来检索这些连接字符串太容易了。

相反,正如我认为您理解的那样,您应该公开一个 Web 服务来提供您的应用程序所需的信息。有几种方法可以解决这个问题。例如,您可以编写一个 REST 接口,以便您的客户端对您的服务器进行 HTTP 调用并接收返回的 JSON 或 XML 响应。您还可以编写一个 Java RMI 服务器,允许您的客户端在服务器上进行远程方法调用以查找他们需要的信息。如果没有更具体的问题或限制,我真的无法建议哪个更合适。

于 2012-12-10T13:13:45.217 回答