Java开发初学者的五条安全小贴士

前言

得益于Java的完备生态,Java一直是非常热门的编程语言。但对于刚刚接触Java的开发者来说,很少会去关注安全相关的问题,没有养成良好的开发习惯,在开发过程中容易带来安全隐患。

我们在本文中总结了五条简单有效的小建议。

一、及时更新依赖组件版本

在Java开发中,开发者经常会用到各类开源组件来实现自己的功能点,但是许多开发者不常关注安全资讯,不了解开源组件的哪个版本存在什么样的漏洞,从而可能会引入安全漏洞。

所以在选择开源组件版本的时候,应优先选择最新发布的组件,因为最新版本的组件通常都会解决历史安全问题,因此使用最新版本组件可以将安全风险降到最低。

二、添加安全相关的HTTP请求头

现代浏览器已经支持很多和安全相关的请求头(header),当添加这些HTTP安全请求头时,浏览器在处理网站内容时会应用相应的安全机制,能够缓解XSS,代码注入,点击劫持等攻击方式。例如,使用Strict-Transport-Security(严格安全传输),就可以强制要求浏览器仅通过HTTPS进行通信。

三、异常信息不输出给用户

异常对象引起的错误返回可能包含敏感信息,在系统抛出异常后,异常信息如果输出给用户,可能会被攻击者利用。例如控制输入参数来暴露应用程序的内部结构和机制,异常消息文本和异常类型可能会泄露信息,以 FileNotFoundException 为例。这些消息包含有关文件系统布局的信息,异常类型显示丢失的请求文件。

为了保护 Java 代码应用程序,开发者们应该过滤异常消息和异常类型,避免直接暴露给用户。

四、避免记录敏感信息

开发者们在开发过程中,会接收到来自用户的许多敏感信息,例如信用卡和银行卡号码、身份证、手机号和密码等信息,这些对犯罪分子来说是高度敏感和有价值的,数据盗窃对个人和组织造成巨大伤害。

开发者们应避免将此类信息明文存储在日志文件中。 如果必须用到身份证等任何敏感信息,可以考虑仅记录身份证号的特征信息,例如最后四位数字或者hash,并确保使用经过验证的脱敏工具库对其进行加密。

五、保持代码的简洁

相对而言,越复杂的代码越容易出现问题,所以开发者应该尽量保持代码的简洁。

以下是一些保持代码简洁的实践:

  • 在不减少功能的情况下使其组织结构尽可能简单。
  • 在代码中避免公开过多的测试用户信息,有助于保持安全性和可维护性。
  • 充分利用 Java 的访问修饰符,尽可能为类、方法及其属性声明最严格的访问级别,将可以设置为私有的内容都设置为私有。
  • 定义尽可能小的 API 和接口对象,解耦组件并使它们在尽可能小的范围内交互,这样即便应用程序的某一个组件被攻击,但是其他组件还是安全的。

总结

安全问题绝大多数都是因为开发人员的安全意识薄弱所导致的,开发者们应该在Java开发的时候,提高代码安全意识和遵守代码安全规范,这会有效提高系统的安全性与流畅性。

参考链接

https://coralogix.com/blog/best-practices-for-writing-secure-java-code/

https://www.synopsys.com/blogs/software-security/spring-security-best-practices/

发布者:墨菲安全,转发请注明出处:https://www.murphysec.com/blog/knowledge-popularization/4175.html

(0)
上一篇 2023年1月4日 17:30
下一篇 2023年1月4日 17:31

相关推荐

  • 我们如何对您的代码进行检测

    所有的代码分析过程都在您的本地环境 整个检测过程主要分为两个环节:获取项目依赖信息、分析项目依赖存在的漏洞 ¶1. 获取项目依赖信息(用户本地环境) 墨菲安全在检测项目存在的安全问题时,首先需要获取到项目的依赖信息。目前我们主要采用项目构建及解析包管理文件两种方式。 我们以使用 Maven 作为构建工具的项目为例: Maven 是专门为 Java …

    2023年1月4日
  • 如何生成一份SBOM清单

    引言 随着软件开发的日益复杂和分散,软件供应链安全成为了一个重要的挑战。软件供应链指的是从源代码到最终产品的整个生命周期中涉及的所有环节,包括开发、构建、测试、部署和维护等。软件供应链中可能存在各种各样的组件和依赖项,如开源软件、第三方库、框架、工具等。这些组件和依赖项可能来自不同的来源,具有不同的许可证,存在不同的漏洞和风险。如果不对这些组件和依赖项进行有…

    2023年7月7日
  • 软件完整性保护方案之Sigstore

    背景 SolarWinds Orion 软件更新包在2020年底被黑客植入后门,此次攻击事件波及范围极大,包括美国政府部门、关键基础设施以及多家全球500强企业,影响难以估计。如果用户能确认软件来源是可信的 SolarWinds 官方,这次事件可能可以避免。 为了确认软件的来源和构建方式,实现完整性保护,Linux基金会联合Red Hat、Google 和 …

    2023年1月4日
  • 谈谈常见开源许可证合规风险及解决方案

    因为我本身也在做开源,所以比较关注这个问题,最近因为工作需要,总结和分析了一下关于开源许可证相关的知识,也分享给大家一起讨论,希望得到大家的指导。 前言 2021年12月,抖音海外版 TikTok 上线了一款名为 TikTok Live Studio 的 APP,但不久其下载页面就被删除。TikTok 官方对此事做出回应,原因是该 APP 违反 GPL 许可…

    2023年1月4日
  • Gitlab 集成 MurphySec 实时代码安全检测

    一、功能简介 将墨菲安全代码安全检测工具集成到 GitLab CI 中,可对每一次代码更新实时进行安全漏洞检测,并快速修复这些安全漏洞。 如果您使用过 GitLab CI 请直接按照第 4 步开始操作 集成效果 二、操作步骤 2.1 部署 GitLab Runner 为了使用 GitLab 的 CI/CD 功能,我们需要在一台能够访问到 GitLab 服务的…

    2023年7月17日

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-180-9568

邮件:hi@murphysec.com

工作时间:周一至周五,10:00-19:00,节假日休息

关注公众号

20230105-100741