如何在 2020 年用 Java 安全编程
一位名为 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 开发人员应该意识到,确保代码安全是一个过程,而不是一个事件。并且,所有地这些问题都需要通过在程序的整个生命周期中进行仔细的审核来解决。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Chrome 支持并排查看两页 PDF 文档
在 Adobe 流行的 PDF 阅读器和经典版 Microsoft Edge 浏览器中,我们都是可以在窗口或缩放比例合适的情况下,以并排两页的方式来查看 PDF 文档。然而在 Google Chrome 和基于 Chromium 内核的新版 Edge 浏览器中,这项功能却迟迟未能实现。好消息是,在最速更新的 Canary 通道中,谷歌已经加入了这项改进。 ▲ 经典版 Edge 浏览器中的 PDF 两页视图 对于习惯了纸质书、或拥有大屏显示器的用户来说,双页模式有望节省大量的阅读时间。 目前谷歌正努力为Windows、Mac、Linux 和 Chrome OS 的 PDF 查看器添加并排视图改进,经典版 Microsoft Edge 的用户可在工具栏选项中激活。 点击“页面视图”,选择“两页”图标或按下 F8 功能键,然后使用鼠标滚轮来水平翻转页面。 在 Adobe Acrobat 阅读器中,体验略有不同。你需要点击“视图 -> 页面显示”,然后选择“两页视图”,并可正常滚动翻页。 ▲ Chrome Canary 中的 PDF 双页视图 其实早在 2010 年,就有人向 Chrom...
- 下一篇
Linux Mint 获得新的主题颜色以及本地网络共享工具
Linux Mint 的负责人 Clement Lefebvre 发布了该项目的每月新闻。本月关于 Linux Mint 有两个大事件,分别是更新默认 Mint-Y 主题的主题颜色,以及新的本地网络文件共享工具。 首先是一整套改进后的主题调色板,新的主题色更关注色调、亮度和饱和度,以使颜色更加鲜艳,同时又不影响可读性和舒适度。 一位Linux Mint内部开发人员已经用上了新的粉色主题,这是他提供的新旧粉色对比图: 可以看到,新的主题色更明亮、更饱和,也更纯粹,粉色更具粉红色特性,而不再像以前一样带有淡紫色调,从感官上来讲更加令人愉悦。 接下来,Linux Mint 团队打算将此方法应用于所有其他颜色,并对文件夹图标也作相应调整。 另一个即将到来的重要更新是,该团队正在开发一个新的本地网络文件共享工具,暂时称为 Warpinator。十年前,Linux Mint 6 曾引入了Giver,它可以轻松在本地网络共享文件,但该项目结束支持后便被删除,此后Linux Mint 一直缺失这项功能。现在,本地网络共享功能终于回归。 Linux Mint的下一个发行版是 Linux Mint 20,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8编译安装MySQL8.0.19
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装