我了解常见的Web漏洞,例如SQL注入,脚本注入,窃取cookie等。但是,我不太了解桌面Java应用程序的安全问题。有什么好的资源可以了解更多相关信息?
具体来说,我所说的是在PC或Mac桌面上运行的Java应用程序(不是applet或服务器)。
我可以想象的Java应用程序的一些问题将是更改注册表设置,安装rootkit,按键记录,弄乱文件系统等。除了最后一个,我不知道如何去做或者如果它甚至可能,那么我不知道它是多么容易实现,因此它有潜在的危险性。此外,如果我理解它是如何完成的,我可以理解如果有什么可以防止它的话。
我觉得文件系统可能会造成很大的破坏,无论是删除文件,窃取数据,更改存储设置文件的程序的设置等等。我听说Java有沙盒模式,但我不是确定如何在沙盒模式下运行程序,或者程序如何知道沙箱模式。
有什么好的资源可以学习这个?
答案 0 :(得分:1)
Java不受C程序员将面临的许多事情的影响(缓冲区溢出就是一个很好的例子)。首先,如果你在jar中移动它,请确保你对代码进行模糊处理,因为java反编译非常容易。
另外,请确保编写代码,以便无法使用您的应用程序(可能作为jar分发)编译类作为库。这会引起许多问题,例如键盘记录器等。
接下来,这可能听起来很愚蠢,但是,它已经发生在过去,如果你要保存登录信息,请确保它不是任何人都可以阅读但是你的应用程序!
如果您使用应用程序连接到服务器,则通过加密数据来防范数据包嗅探器。
编辑:我完全同意开源的想法。如果可以,请开源代码。它会为你省去很多麻烦。答案 1 :(得分:1)
这是攻击面的问题。你必须问自己:攻击者如何影响这个应用程序?在Web应用程序中,它有明确的GET和POST变量。在不使用网络的桌面应用程序中,可能存在零攻击面。如果攻击者以提升的权限运行,则桌面应用程序可能对攻击者有用,而具有较低权限的攻击者可能会影响此应用程序以获得其权限。
用Java编写的恶意应用程序删除文件不是一个开发者。它只是无趣的恶意软件。 Here是一个很大的漏洞列表。
说实话,你为学校写的大部分申请都没有安全概念。您编写链接列表实现或一些简单的CLI应用程序。