Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA如何存储mysql登录详细信息_Java_Mysql_Security_Login_Details - Fatal编程技术网

JAVA如何存储mysql登录详细信息

JAVA如何存储mysql登录详细信息,java,mysql,security,login,details,Java,Mysql,Security,Login,Details,环境 我有一个java应用程序,它需要访问mysql数据库来加载和保存数据,而加载/保存不能通过写入磁盘来实现,因此必须通过数据库 我正在阅读关于JNDI的文章,但我不确定这是否有帮助,因为我看到的每个示例都是针对javaservlet的,我的目标是在java独立应用程序中使用它 问题 存储mysql用户名和密码的最佳方法是什么,这样所有客户端都可以访问数据库,但仍然可以保护登录信息,这样我的程序就不会被反编译,有人使用mysql登录删除我的所有表 你们推荐什么?我希望这是尽可能安全的,我愿意

环境

我有一个
java
应用程序,它需要访问
mysql
数据库来加载和保存数据,而加载/保存不能通过写入磁盘来实现,因此必须通过数据库

我正在阅读关于
JNDI
的文章,但我不确定这是否有帮助,因为我看到的每个示例都是针对
javaservlet
的,我的目标是在
java
独立应用程序中使用它

问题

  • 存储
    mysql
    用户名和密码的最佳方法是什么,这样所有客户端都可以访问数据库,但仍然可以保护登录信息,这样我的程序就不会被反编译,有人使用
    mysql
    登录删除我的所有表

  • 你们推荐什么?我希望这是尽可能安全的,我愿意接受任何建议

  • 只有少数语句将在数据库上执行,这些是硬编码字符串,用于准备语句,所以我认为这是安全的还是不安全的

  • 但我的主要问题是保护数据库登录信息


您有几种选择:

  • 使用具有最低权限的凭据。这意味着该用户将能够插入,但不能删除或删除
  • 通过创建Web服务(或其他远程处理技术)将写入数据库的程序和代码分开
  • 仅使用过程和函数联系数据库并仅将其授予用户。通过这样做,您将登录到数据库,除了调用过程和函数外,不允许执行任何操作

补充@Marged提供的选项,您还可以在代码中加密和存储凭据。请参见此处的加密+解密示例。这将对任何反编译器隐藏凭据


使用web服务选项是一种更为严肃的方法,需要付出更多的努力和成本来实现,然后您需要保护这些服务。

@anopll然后有人使用Java反编译器并获取包含所有凭据的连接字符串?不行。请在数据库中存储用户信息。用xml保存您自己的数据库信息。登录检查时,与授予访问权限的db用户相比,创建web服务是一个选项吗?我正在研究web服务选项,这似乎是最可行的,因为如果有足够的空闲时间和合适的工具,一个有决心的人难道不能在内存中看到解密的字符串吗?我知道我仍然需要确保web服务器的安全,但是我从哪里开始呢?我的意思是,要开始创建一个能够处理这个问题的web服务,我应该谷歌/阅读什么?你必须将解密代码放入你的程序中,这样反编译器也会显示这一点,这使得该解决方案不是100%secure@Marged-同意,我们仍然有可能把它弄出来,但它确实需要更严格的反编译和调试。@Mkey-正如我所说的,web服务需要更多的努力和成本。这可能是一个很好的开始。@ Mkey,你可能想考虑Spring Bug,看看这个例子:我喜欢第一个看起来非常简单和有点安全的选项,但是如果有人决定把它淹没并可能导致拒绝服务的话,我仍然会有一个满是垃圾数据的数据库。我应该查阅什么才能获得有关您所谈论的远程处理技术的更多信息?@Mkey远程处理也不会使您免受dos攻击。使用每应用凭据保护您的Web服务,或者对传入数据实施健全性检查您所说的每应用凭据是什么意思?我的想法是创建一个包含登录详细信息的.xml文件,这样外部世界就无法查看该文件,但我如何才能使我的应用程序能够从中获取登录详细信息?@Mkey我的意思是,您的应用程序的每个用户都可以获得自己的凭据,以通过您的Web服务进行身份验证