我正在创建一个Java桌面应用程序,该应用程序会在数据库中生成并存储用户密码。
我的问题是:在应用程序中实现SQL查询的最安全方法是什么?
当然,将查询包含在源代码中并不安全。我的解决方法是将db文件存储在本地,但我希望将数据存储在外部服务器上。
因此,如何在不嵌入源代码的情况下在Swing应用程序中实现SQL查询。
无需保护查询文本。您可能对日志记录查询所使用的参数有所顾虑。如果将原始密码存储在数据库中,则将出现问题。因此,我建议不要首先存储原始密码。
我将详细介绍如何将SQL嵌入Java代码中。如果您的应用程序使用数据库,则需要调用数据库,这意味着将执行SQL语句。避免这种情况的唯一方法是将这项工作委派给另一个应用程序,这样您的应用程序将不使用SQL,而是使用某些自定义协议/ API,并且该应用程序将代表它执行SQL查询。
您可以将SQL与Java代码分开存储,但这不是出于安全考虑,而主要是因为需要更正确地构造应用程序。不将SQL嵌入Java代码的主要驱动力是代码的可读性,性能,维护和代码重用。
访问数据库时,通常使用ORM。在这种情况下,您的应用程序根本没有SQL代码,而是通过ORM API访问数据库,这并不少见。例如,在休眠状态下,查询可能类似于
User user = session.createCriteria(User.class)
.add( Restrictions.eq("name", userName) )
.uniqueResult();
而且,即使您需要执行您选择的ORM不直接支持的某些SQL查询,SQL文本本身也通常存储在一些附带的xml文件中。
请注意,在后一种情况下,尽管从技术上讲SQL未嵌入Java代码中,但它仍驻留在您的一个应用程序包中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句