Chr*_*oom 5 java database security passwords jar
我不是Java开发人员,但我的客户已经雇用了一个更新其网站上的一些JAR文件.在此之前,我们审核了现有代码并发现了许多安全漏洞.我们用于使文件更安全的解决方案之一是创建一个对数据库具有只读访问权限的新数据库用户,并且仅针对JAR文件需要操作的那些表.然后我发现他们将这些凭证与JAR文件一起存储在纯文本文件中,只是远离公众的教育猜测.最后,今天他们要求更宽松的数据库权限,但我不认为她理解她真的不应该为正确编写的JAR文件需要它们.
无论如何,我很确定这个开发人员如果把它咬在后面就不会知道安全漏洞.而且我对Java/JAR文件不够了解,不能正确地告诉她她应该做什么,只关于infosec告诉她她不该做什么.
那么在编写连接到远程MySQL数据库的分布式JAR文件时,典型的安全注意事项是什么?是否有加密连接详细信息(用户名和/或密码)的标准方法?IIRC,不是.jar文件只是美化ZIP档案,并且没有任何人可以解压缩文件并查看源代码中的连接细节?有没有办法加密jar文件内容?
更新:我收到了开发人员的以下说明.这听起来不错吗?
jar文件中的所有类都是加密的.我总是加密所有类文件,然后将它们存档在一个jar文件中.如果您打开任何[编辑] jar,您将只看到加密代码.因此,用户无法通过反编译来查看源代码.这些类确实使用jdbc连接到db,搜索eangine需要连接到DB才能运行sqls.这些sql是jar文件中的加密clase.
当我问你关于加密数据库密码时,我的意思是你在下面说的.我们将在java中编写加密/解密代码并使用它.来自此源代码的编译类将再次作为reoutine类加密过程的一部分进行加密.我们使用名为Retroguard的Java混淆工具来加密所有类.我们还在html页面中嵌入了一个密钥,以确保只有在[编辑]网站下载后才能使用该应用程序.如果用户将jar复制到他的本地计算机并尝试运行它,它将失败.
是的,JAR 只是 ZIP 文件,因此完全可以使用 WinZip 打开 JAR 并查看其内容。如果您知道自己在做什么,则可以在其中找到纯文本密码。
听起来您的 JAR 包含一个直接连接到数据库的客户端。您没有说明这是通过互联网、VPN 还是 LAN 完成的。数据库是从客户端远程部署的吗?
这是客户端/服务器应用程序消失的原因之一:很难通过互联网保护它们。
对我来说,你的应用程序听起来像是经典的客户端服务器。我有这个权利吗?
通常在客户端和数据库之间引入中间层来检查安全性、验证和绑定输入以及将请求传送到适当的处理程序以实现。让用户提供中间层必须验证的凭据,然后再将其传递到数据库。
它还可以为您提供抵御 SQL 注入攻击的机会。
如果您加密 JAR 内容,则必须编写自定义类加载器以在加载时对其进行解密。不适合胆小的人。
如果您的客户端是一个 Swing 应用程序,所有逻辑和数据库内容都内置到为每个组件注册的侦听器和事件处理程序中,那么您将需要进行认真的重写。您将转向更多面向服务的架构,其中所有工作都由服务器端的服务完成。客户端只做经典 MVC 中应该做的事情:将事件传递到服务器端并显示结果。你的客户会轻松很多。
这将是对您的开发团队和业务的最大冲击。
| 归档时间: |
|
| 查看次数: |
6373 次 |
| 最近记录: |