【发布时间】:2012-12-10 13:08:41
【问题描述】:
好的,我提前为这个问题道歉,因为它相当广泛。
基本上,我正在开发一个系统,涉及:
- 用户可以注册帐户的网站。此过程将在服务器上为该帐户创建一个新数据库。
- 用 Java 编写的客户端外部应用程序。这将访问数据库中的数据,以便为用户执行有用的操作。
- 在第一点创建的数据库本身。
我的问题是应实施哪些安全措施以确保数据库安全以及如何安全地传输数据。
我的担忧是:
- MySQL 数据库实际上是如何保护的?在注册帐户时创建数据库时,是否需要为该数据库设置密码?这会加密数据库吗?这足以阻止某人访问数据吗?
- Java 很容易反编译。假设我要将帐户数据库的登录数据存储在主数据库中,我如何保护该数据库并以不需要我硬编码连接到该数据库的详细信息的方式从我的应用程序连接到它在应用程序中。我相信这在编译为本机代码的语言中也一定是一个问题,因为有人可以在应用程序运行时执行内存转储来获取这些变量(我认为)。
- 从服务器向客户端发送和接收数据时,反之亦然,如何防止有人通过网络窃听并获取数据(无论是登录凭据还是数据库中的其他数据)。我认为这就是 SSL 的用途,但这就是我需要使用的全部内容吗?
这些问题的一个可能答案是在 Java 客户端应用程序和数据库之间使用中间人服务,就像在 Javascript 和 MySQL 数据库之间使用 PHP 一样(尽管 PHP 在这个案例)。我假设这个中间人服务将包含主数据库等的登录凭据,并将包含它自己的方法来防止未经授权的访问。如果这是正确的,我将如何设置这样的服务?是否可以利用 Java 应用程序中的 PHP 脚本来传输数据?
我希望我的问题是有道理的,不是太模棱两可。 提前感谢您的宝贵时间。
【问题讨论】:
-
我认为这个问题太宽泛了,无法回答。部分问题已在 SO 上反复询问和回答,如果没有更多有关上下文的信息,例如您的客户是否可以信任他们自己的数据库,则无法回答其他问题...
-
对内容的广泛性和含糊之处表示歉意。客户可以信任他们的数据库,因为其中的信息将被输入并由他们管理。我最初考虑使用客户端数据库,但认为只要用户下载 Java 客户端应用程序并可以访问互联网,就允许从任何地方访问数据会更好。多个用户将访问同一个数据库(基本上是企业中的经理,其帐户归企业所有,但由多个经理访问)[下文继续]
-
这将降低数据中的冗余级别,因为从多个位置只能访问一个数据库。希望这能让它更清楚一些。