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
    +关注

    关注

    20

    文章

    2997

    浏览量

    115660
  • API
    API
    +关注

    关注

    2

    文章

    2147

    浏览量

    66219
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Arm Neoverse CPU上大代码量Java应用的性能测试

    Java 是互联网领域广泛使用的编程语言。Java 应用的一些特性使其性能表现与提前编译的原生应用(例如 C 程序)大相径庭。由于 Java 字节码无法直接在 CPU 上执行,因此通常
    的头像 发表于 11-05 11:25 369次阅读
    Arm Neoverse CPU上大代码量<b class='flag-5'>Java</b>应用的性能测试

    全新ES8领先一代的数字架构,实现安全冗余

    工程语言里,冗余是一种与安全和可靠性密切相关的设计哲学。对于一辆豪华车来说,它的目标从来不是「够用就行」,而是要为一切潜在风险提前留出空间,更高的标准构建安全的底线。   因为车不会永远行驶在春风和煦的平直公
    的头像 发表于 10-12 15:29 2571次阅读

    安波福助力smart#5斩获Euro NCAP安全评级

    近日,在Euro NCAP2025最新的安全测试中,搭载安波福L2+ ADAS系统的smart #5 成功斩获安全评级,并以最高综合得分位列全年参与测试的中大型SUV之首,这有力
    的头像 发表于 09-26 14:41 509次阅读

    Java效率提升指南:5Java工具选型建议及Perforce JRebel和XRebel介绍

    企业级Java环境越来越复杂,真正的破局点,可能不在“人”,而在于“工具”。5实用建议,帮你理清Java工具的选型思路。
    的头像 发表于 09-11 13:59 908次阅读
    <b class='flag-5'>Java</b>效率提升指南:5<b class='flag-5'>个</b><b class='flag-5'>Java</b>工具选型建议及Perforce JRebel和XRebel介绍

    汽车软件开发阶段安全的意义与原则

    上海磐时PANSHI“磐时,做汽车企业的安全智库”好书分享/《一本书读懂智能汽车安全》汽车软件开发阶段安全的意义与原则本文节选自SASETECH汽车
    的头像 发表于 09-05 16:16 667次阅读
    汽车软件开发阶段<b class='flag-5'>安全</b>的意义与<b class='flag-5'>原则</b>

    隧道施工安全管理系统:构筑隧道施工安全防线隧道大系统

    隧道施工安全管理系统隧道大系统建设隧道人员定位
    的头像 发表于 08-12 12:05 597次阅读
    隧道施工<b class='flag-5'>安全</b>管理系统:构筑隧道施工<b class='flag-5'>安全</b>防线隧道<b class='flag-5'>五</b>大系统

    伟邦科技电梯无线方对讲系统:告别布线困扰,黑科技守护每一趟电梯安全

    伟邦科技方对讲系统将电梯轿厢内、电梯机房、电梯轿顶、电梯底坑以及物业管理中心(或监控室)紧密相连,构建实时互联的通信网络。若一旦电梯发生故障有人被困,被困人员按下轿厢内的呼叫按钮,求救信号便以毫秒级速度传递至方设备,最极致
    的头像 发表于 08-01 10:29 811次阅读

    高速PCB布局/布线的原则

    层三、网格中添加过孔避免热点四、路由高速信号135°走线弯曲、增加瓶颈区域外的线距离六、增加菊花链路(避免长存根)七、差分布线原则八、正和负信号间的紧密延迟偏差
    的头像 发表于 05-28 19:34 1902次阅读
    高速PCB布局/布线的<b class='flag-5'>原则</b>

    技术预见者的实践之路:C-V2X发展

    梳理中国C-V2X技术发展历程,以2019北汇信息首套测试系统为起点,结合2021对CSAE 53-2020与157-
    的头像 发表于 05-27 11:01 1734次阅读
    技术预见者的实践之路:C-V2X发展<b class='flag-5'>五</b><b class='flag-5'>年</b>记

    Java 到 Go:面向对象的巨人与云原生的轻骑兵

    Go 语言在 2009 被 Google 推出,在创建之初便明确提出了“少即是多(Less is more)”的设计原则,强调“以工程效率为核心,极简规则解决复杂问题”。它与 Java
    的头像 发表于 04-25 11:13 506次阅读

    全新岚图梦想家获电动汽车火灾安全星认证

    等级的星评价。这也是岚图FREE车型在2024获得该星评价后,岚图再获殊荣,彰显了岚图汽车在电动汽车安全领域的卓越实力。
    的头像 发表于 04-12 16:41 1083次阅读

    如何维护i.MX6ULL的安全内核?

    。 5.15 内核系列将维护到 2026 12 月,这意味着将发布新版本,从而关闭已知漏洞。 不幸的是,据我所知,linux-imx 分支原则上不会使用较新的微版本进行更新;5.15.71 仍然是
    发表于 04-01 08:28

    大云计算平台的建设原则,缺一不可!

    云计算平台建设需遵循五大原则:可扩展性、高可用性、安全性、灵活性、合理的成本效益,以实现高效、可靠、安全、灵活且经济的云服务。UU云小编认为云计算平台的建设原则具体涵盖以下几个方面:
    的头像 发表于 01-20 10:18 702次阅读

    飞腾CPU助力城市地铁AFC系统投入使用

    近日,天津、重庆、深圳、合肥、贵阳城市的9条城市轨道线路集中开通,基于飞腾CPU的自动售检票系统(AFC)正式投入使用,为城近8000万市民的日常出行担当运行保障,中国芯服务社
    的头像 发表于 01-08 15:32 1116次阅读

    Java微服务中如何确保安全性?

    Java微服务架构中确保安全性,可以采取以下措施: 身份验证与授权: 使用OAuth 2.0和OpenID Connect框架进行身份验证和授权。OAuth2允许用户在不分享凭证的情况下授权第三方
    的头像 发表于 01-02 15:21 1025次阅读