一位名为sam bocetta的作者发表了一篇文章,针对在2020年使用java进行编码时应遵循的五个原则进行了研究。他在文中表示,尽管目前java的安全性相较于一些旧的语言(特别是c和c ++)而言有所长进,但是使用java编写的代码的漏洞级别还是取决于程序员遵循的最佳实践。
在当今的开发环境中更是如此,各种新的安全性技术、黑客技术以及新颖的存储和加密形式,意味着许多人都在质疑着java的安全性。java开发人员还面临着包括云迁移的安全性问题在内的诸多挑战。另一方面,新的安全审核技术(如混沌工程)也为开发人员提供了许多提高代码安全性的机会。
五个原则的具体内容如下:
1. audit your libraries
首先从基于java的软件最明显的漏洞源开始:外部库。
使用外部库本身不是问题。在2020年,大多数开发人员的大部分时间确实都花在了与第三方库的合作上。未来随着客户需求的发展,库的类型也会也来越多。因此,重要的是在每次添加新的库的时候,开发人员都要去仔细检查其中的已知漏洞,不能掉以轻心。
审计您的库不仅对安全性有好处。在审核的同时,您可能还会发现其他对性能产生不利影响的问题。并且,如果您要审核的库是开源的,则可以借此机会报告错误并在整个开源社区中建立团队的声誉。
2. manage application secrets
在管理应用程序的secrets时,java开发人员也养成了一些坏习惯。基本上,社区可以分为两个阵营:那些牺牲安全性以便为用户提供尽可能流畅的软件体验的人,以及那些希望用户花费4个小时为自己的利益输入凭据的人。
实际上,2020年的编码意味着要在安全性和可用性之间取得平衡。对可用性的过多关注通常会导致代码不安全,对安全性的过多关注则意味着用户将会花费大部分时间来尝试规避你采取的安全措施,且他们最终也会成功找到方法。
而在管理应用程序的secrets时,java开发人员可以从了解cms平台之间的差异中学到很多东西。因为大多数的cms平台都具有庞大的用户基础,这意味着其开发人员必须仔细考虑如何管理应用程序的secrets,同时还要保持普通用户的可用性。
3. use mature encryption libraries
用于加密的库应该比其他类型的库进行审计和分析的频率更高。过去,用于加密的java库极难使用,其api对普通开发人员的帮助不足。这也就导致了许多java开发人员开始自己编写加密库。
在此过程中,一些人开始错误地对自己的加密技术产生浓重的自豪感,并对他人编写的代码产生怀疑。而此举并不可取,毕竟一些开发人员一生都在致力于制作不可破解的加密库,他们编写的加密库性能势必要强于大部分人。
用java进行加密的最好方法则是使用该语言提供的内置工具,重新发明轮子没有任何意义(也存在重大弊端)。
4. validate your inputs
如上所述,2020年的编程很大一部分是确保您的用户不会破坏您精心设计的软件。最简单的方法之一是花费一些时间来验证用户输入。此举不仅能使您的应用程序更安全,也会使得它们更易于使用。
5. don’t reinvent the wheel
最后,一种万能的原则适用于所有语言的所有开发人员:不要自己制作易于使用的版本。
自己制作库的问题在于,晦涩的代码本质上并没有比公开可用的代码更安全。主要原因是开源库在被众人使用的同时,也在被成千上万人检查。因此,其中所存在的漏洞也会很快被发现。
总结
100%的安全是不可能的。确保java开发中的安全性的关键是,拥有一个用于检查安全漏洞并将其关闭的系统。最重要的是,java开发人员应该意识到,确保代码安全是一个过程,而不是一个事件。并且,所有地这些问题都需要通过在程序的整个生命周期中进行仔细的审核来解决。
燃料电池电堆的设计和制造技术
解决卡脖子难题!高频超薄柔性覆铜板项目落户江苏
马斯克星链与芯事:30亿炸出卫星互联网革命,GPU算力创无限可能!
OPPO正在“造芯”?可有胜算?
大电流弹片微针模组在手机电池测试中的优势是什么
2020年用Java安全编程的五个原则
差分滤波器布线需要注意的8个问题
单片机自定义协议FIFO高效发送数据方法
物联网和汽车电子的发展将会使集成电路产业从中受益
基于iDrive智能伺服控制器和iPack2000的多轴伺服枕式包装机控制系统
Ime推出基于格芯22FDX®解决方案的模拟内存内计算架构的新型AI芯片
存储设备:U盘/USB加密转接器
python写错了怎么更改
Cruise正在测试完全无人驾驶汽车
5G网络的部署需要大量光纤连接各种基站至少需要几亿芯公里
行灯变压器能给电瓶充电吗
一种基于CPLD加载FPGA的方案设计详解
如何确定滤波器共模插损的最高频率?
区块链的理想与现实有什么区别
智能音箱承载着向家庭普及互联网的重任 已经从无屏向带屏延伸拓展