我知道常见的web漏洞,如SQL注入、脚本注入、窃取cookie等。然而,我对桌面Java应用程序的安全问题知之甚少。有什么好的资源可以了解更多关于这方面的信息?
具体地说,我指的是在PC或Mac桌面上运行的Java应用程序(而不是applet或服务器)。
我能想象的Java应用程序的一些问题是更改注册表设置,安装rootkit,按键日志记录,扰乱文件系统,等等。除了最后一个问题,我不知道如何去做,或者这是否可能,所以我不知道实现起来有多容易,因此它有潜在的危险。此外,如果我了解它是如何做到的,我就可以理解如果有什么可以防止它的话。
我觉得文件系统可能会造成很多破坏,不管是删除文件、窃取数据、更改存储设置文件的程序的设置,等等。我听说Java有一个沙箱模式,但我不确定在沙箱模式下运行程序是如何工作的,也不知道程序是如何知道自己处于沙箱模式的。
有什么好的资源可以用来学习这方面的知识?
发布于 2011-03-23 10:06:12
Java不会受到C程序员会遇到的许多问题的影响(缓冲区溢出就是一个很好的例子)。首先,如果你在jar中移动你的代码,确保你混淆了它,因为java反编译很容易完成。
此外,请确保您编写的代码不能将类作为库与您的应用程序(可能作为jar分发)一起编译。这就产生了很多问题,比如键盘记录器等等。
接下来,这可能听起来很愚蠢,但是,这在过去已经发生过,如果你正在保存登录信息,请确保除了你的应用程序之外,任何人都不能读取它!
如果您使用应用程序连接到服务器,请通过加密数据来防止数据包嗅探。
编辑:我完全同意开源的想法。如果可以,请将您的代码开源。这会给你省去很多麻烦。
发布于 2011-03-24 00:54:35
这是一个攻击面的问题。你必须问你自己:攻击者如何影响这个应用程序?在web应用程序中,它有clear、GET和POST变量。在不使用网络的桌面应用程序中,可能存在零攻击面。如果桌面应用程序以提升的权限运行,而具有较低权限的攻击者可能会影响此应用程序以获得其权限,则桌面应用程序可能对攻击者很有用。
用Java编写的删除文件的恶意应用程序不是利用漏洞的。这只是一个无趣的恶意软件。Here是一个很大的漏洞列表。
老实说,你为学校写的大多数应用程序都没有安全的概念。您正在编写一个链表实现或一些简单的CLI应用程序。
https://stackoverflow.com/questions/5400014
复制相似问题