0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

2020年用Java安全编程的五个原则

汽车玩家 来源:开源中国 作者:白开水不加糖 2020-03-05 14:31 次阅读

一位名为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开发人员应该意识到,确保代码安全是一个过程,而不是一个事件。并且,所有地这些问题都需要通过在程序的整个生命周期中进行仔细的审核来解决。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2966

    浏览量

    104696
  • API
    API
    +关注

    关注

    2

    文章

    1496

    浏览量

    61950
收藏 人收藏

    评论

    相关推荐

    上汽大通eTerron 9斩获欧洲Euro NCAP安全认证

    全球高品质锻造“星大通”!近日,2024最新一期Euro NCAP(欧洲新车安全评鉴协会,以下简称Euro NCAP)安全碰撞测试结果
    的头像 发表于 12-06 16:04 214次阅读

    详解SMT工艺的原则

    SMT(表面贴装技术)工艺中的原则,是工程师在选择焊膏时的一重要指导原则,它确保了焊接的可靠性和质量。以下是对
    的头像 发表于 12-04 09:11 133次阅读
    详解SMT工艺的<b class='flag-5'>五</b>球<b class='flag-5'>原则</b>

    深入了解Java泛型——从前世今生到PECS原则

    元素?”的问题,也会出现感叹Java的泛型限制太多了很难用的情况。 为了更好的使用泛型,就需要更深地了解它,因此本文主要介绍泛型诞生的前世今生,特性,以及著名PECS原则的由来。 泛型的诞生 背景 在没有泛型之前,必须使用Object编写适用于多种类
    的头像 发表于 11-21 11:45 125次阅读
    深入了解<b class='flag-5'>Java</b>泛型——从前世今生到PECS<b class='flag-5'>原则</b>

    对比Python与Java编程语言

    Python与Java都是目前非常流行的编程语言,它们各有其独特的优势和适用场景。以下是对这两种编程语言的对比: 一、语法和易用性 Python 语法简洁,代码更易读,非常适合初学者。 动态类型系统
    的头像 发表于 11-15 09:31 285次阅读

    安全型继电器要符合什么原则

    安全型继电器在设计和使用过程中,必须符合的核心原则是 故障-安全原则 。这一原则的具体含义和要求可以归纳如下: 故障-
    的头像 发表于 09-21 10:12 522次阅读

    java子类可以继承父类的什么

    Java是一种面向对象的编程语言,它支持继承的概念。继承是面向对象编程的三大特性之一,它允许一类(称为子类或派生类)继承另一类(称为父类
    的头像 发表于 08-20 11:02 1131次阅读

    三十分钟入门基础Go Java小子版

    Java功能上的对比来阐述Go语言 的基础语法、面向对象编程、并发与错误四方面。 一、基础语法 Go语言的基础语法与常规的编程语言基本类似,所
    的头像 发表于 08-12 14:32 717次阅读
    三十分钟入门基础Go <b class='flag-5'>Java</b>小子版

    华纳云:java web和java有什么区别java web和java有什么区别

    Java Web和Java是两不同的概念,它们在功能、用途和实现方式上存在一些区别,下面将详细介绍它们之间的区别。 1. 功能和用途: – Java是一种
    的头像 发表于 07-16 13:35 781次阅读
    华纳云:<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别<b class='flag-5'>java</b> web和<b class='flag-5'>java</b>有什么区别

    Oracle确认Java/JDK 11官方支持延长至20321月 

    此外,Solaris操作系统上的Java SE 8和Java SE 11的官方支持也同步延期至203012月及20321月,进一步延长了该平台上的
    的头像 发表于 05-16 15:57 1184次阅读

    pcb设计的基本原则分享 PCB设计16原则一定要知道

    PCB设计的这16原则你一定要知道
    的头像 发表于 03-12 11:19 2847次阅读

    四种编程语言之间的区别和联系

    编程语言是一种人与计算机之间进行交流的方式,不同的编程语言有着不同的特点和用途。本文将对四种常见的编程语言——Python、Java、C++和JavaScript进行比较,分析它们的区
    的头像 发表于 02-05 14:16 1539次阅读

    Oracle 2024Java发展蓝图分析

    Oracle 的 Java 开发者布道师 Nicolai Parlog 于近日发布一段视频,介绍了 2024 Java 工作规划。
    的头像 发表于 01-26 14:27 1323次阅读

    plc梯形图编程的基本原则

    PLC(可编程逻辑控制器)是现代自动化控制领域中广泛应用的一种控制装置。PLC的梯形图编程是PLC控制中最常用的编程方式之一。本文将详细介绍PLC梯形图编程的基本
    的头像 发表于 01-22 10:51 2459次阅读

    控制静电放电的三基本原则

    控制静电放电的三基本原则  控制静电放电是一项关键的工程问题,尤其是在现代工业中。静电放电不仅可能损坏电子设备和电子元件,还可能引发火灾和爆炸等安全问题。为了有效地控制静电放电,我们需要遵循三
    的头像 发表于 01-03 11:00 2306次阅读

    准确测量绝缘电阻的步骤

    准确测量绝缘电阻的步骤  准确测量绝缘电阻是电气工程领域中的一项基本任务。在电气设备和系统中,绝缘电阻测量是确保电器设备安全可靠运行的重要步骤。下面将详细介绍准确测量绝缘电阻的
    的头像 发表于 12-25 11:31 1969次阅读