Java|Java:使用Java功能确保应用程序安全的方法

Java|Java:使用Java功能确保应用程序安全的方法

文章图片

Java|Java:使用Java功能确保应用程序安全的方法

与添加新功能一样重要的是 , 应用程序开发人员需要开始更加重视他们设计的应用程序的安全性 。 毕竟 , 更多的应用程序功能意味着更多的数据驻留在应用程序中 。 如果没有适当的安全控制 , 这些数据很容易被入侵者窃取 。
Java是目前世界上最安全、最流行的编程语言之一 。 自20世纪90年代中期以来 , 尤其是在设法消除了C和C++语言的许多安全隐患和漏洞之后 , 它一直获得了良好的声誉 。 然而 , 成为最安全的编码语言并不能使Java编码免受可能的网络安全威胁 。 开发人员仍然必须提供安全的代码 , 并确保他们的应用程序是万无一失的 , 即使他们是用Java特性开发的 。 这10个技巧将随时派上用场 , 以确保Java特性的应用程序安全性:
1.在Pi平台上使用Java ME
如果你使用复盆子Pi 4作为设计Java应用程序的平台 , 那么在Pi上安装Java ME将允许你轻松地嵌入、测试和调整应用程序的安全功能 , 即使是对于内存空间或磁盘占用较小的设备也是如此 。 JavaME是用基于CLDC的运行时构建的 , 允许它在高度内存受限的设备(低至1MB)上运行 。 如果你的设备的内存容量为10MB或更大 , 则需要具有基于CDC的运行时的Java ME 。 只需确保你用于开发应用程序的Java ME版本是专门为树莓派构建的 。2.避免复杂和混乱的编码
序列化是有用的 , 因为它允许Java程序员将远程输入/对象转换成可传输的字节流 , 然后可以作为完全赋予的对象保存到磁盘上 。 这个过程可以反过来(通过Java反序列化)从保存的字节流中重新创建原始对象 。
然而 , Java反序列化很容易受到攻击 , 因为在解码之前 , 不可能从保存的字节流中判断出原始对象是什么 。 这意味着如果攻击者向你的应用程序发送一个序列化的恶意对象 , 你必须首先解码它 , 此时你已经实例化了它 。 未知数据将已经在JVM中运行代码 。
如果能够消除类路径上的漏洞 , 这些攻击是可以避免的 。 问题是 , Java库和第三方库中有大量的类 , 加上你自己代码中的类 , 几乎不可能保证你的类路径中没有易受攻击的类 。
【Java|Java:使用Java功能确保应用程序安全的方法】
3.加密数据
有大量的开源库 , 它们由大量专门用于Java开发的类定义(预先编写的代码)组成 。 它们包括日志库(例如Log4j、SLF4j、LogBack)、解析库(例如JSON)和通用库(例如Google Guava和Apache Commons库)等等 。
但是并不是所有的图书馆都是安全的 。 要确保库的可靠性 , 请考虑:
l 它的文档 。 如果没有很好地记录 , 它可能是不安全的 。
l 它背后是否有一个活跃的支持社区;也许是一个开发者论坛 , 你可以在那里获得帮助?
l 应用编程接口(API)文档怎么样?
l 该库正在开发中吗?如果是 , 它有多稳定/精简?
4.使用查询参数化
注入是当今最大的应用程序漏洞之一 。 入侵者使用Java中典型的sql注入将SQL查询链接在一起 , 导致SQL的不安全执行 。 你可以使用查询参数化来防止它 。 这些参数阻止入侵者访问查询的静态部分 , 因此他们无法获得关键的应用程序信息 。
为了防止Java中的注入 , 程序员准备了一个最终用户必须用来访问应用程序数据库的语句 。 如果用户没有通过这个预先存在的语句创建他们的查询 , 那么应用程序将知道执行SQL是不安全的 。 简单来说 , 查询参数化就是定义一个app的完整SQL代码和安全查询的参数 。 它将SQL代码与参数数据分开 , 这样查询就不会被劫持 。