在社会各个角落的互联网时代,伴随着安全问题,它总是无尽的。由于公司的源代码泄漏到开源社区Github.200,000元人民币,因此公司的损失巨大。
  通用公司的核心业务法规将拥有敏感信息,例如数据库和第三方通信。如果将其存储在明亮的文本中,一旦泄漏,它将给公司带来巨大的损失。但是,许多小型和中型开发人员对此方面的标准化不足,因此许多敏感信息直接以形式直接存储在代码中明亮的文字。此类项目的安全风险非常大。
  本文解释说:SpringBoot集成了JASYPT,以加密项目敏感信息以提高系统的安全性。
  在系统中,将有相应的配置文件,其中包含交互信息,例如数据库和第三方系统。在配置文件中,所有参与信息安全性的配置项不应存储在明亮的文本中,否则将配置文件泄漏,它将导致巨大的安全问题。需要加密的常见信息项如下:
  首先:这是为了防止在代码泄漏代码时简单地获取系统中的敏感信息的第三方,这可能会对系统和数据库造成损坏。
  其次是通用系统,将进行代码安全检测的过程。敏感数据(例如帐号和密码)存储在通常未批准的明亮文本中,因此需要对其进行加密。
  最后,作为开发人员,您应该对自己有更高的要求。在开发过程中,应考虑潜在风险并提供相应的处理计划。
  开源社区很强大:当有需求时,某人是专门的。最小的代码将为项目添加基本的加密功能。
  JASYPT官方文件:http://www.jasypt.org/
  JASYPT-SPRING-BOOT组件是Jasypt对Springboot Projects集成的依赖,这仅满足我们的需求。它支持以下三种将集成到项目中的方法。
  在Springboot应用程序中,如果使用@springbootapplication或@enableautoconfiguration注释,则可以将jasypt-spring-boot添加到POM文件中,然后在整个春季环境中使用JASYPT在整个春季环境中使用JASYPT。,命令行参数,突起,YML和任何其他属性源)。
  如果项目中未使用@springbootapplication或@enableAutoconFiguration注释,则可以通过以下两个步骤完成JASYPT的集成。
  步骤1:POM文件引入JASYPT依赖关系
  步骤2:在“配置”类中,添加@enablecryptable Properties注释。示例如下:
  这样,您的项目也可以集成JASYPT,您可以加密属性或在整个弹簧环境中启用(属性包括:系统属性,环境属性,命令行参数,属性,YML和任何其他属性)。
  如果项目中未使用@springbootapplication或@enableautoconfiguration注释,并且您不想在整个春季环境中启用加密属性,则可以使用此方法。具体步骤如下:
  步骤1:POM文件引入JASYPT依赖关系
  步骤2.在“配置”类中,使用@encryptablepropertysource注释添加想要生效的任何数量的配置文件路径,并且类似于春季@propertysource注释的使用。示例如下:
  同时,您还可以使用@encryptable Propertysources来注释@encryptablepropertysource配置。示例如下:
  描述:从JASYPT 1.8的版本开始
  说明该项目的技术堆栈是Spring-Boot+Jasypt.Superior。
  1.配置JASYPT参数
  2.配置加密算法Secret(无法将秘密直接放置在配置文件中,以下内容将专门汇总键存储键以确保安全性的方法))))
  更换后的配置信息:
  Jasypt加密有三种方式,如下:
  方法1.使用代码生成变量字符串,代码工具如下:
  方法2.使用Java CP命名在加密时生成密码文本
  参数描述:
  特殊说明:要以这种方式获得Ciphertexts,您需要在JASYPT-1.9.3.3.JAR软件包位于Maven Warehouse下方的路径下执行,否则您将找不到相应的主类。
  方法3.使用jasypt-maven插件生成密文
  该插件由JASYPT正式提供。将相应的依赖项添加到POM中,然后使用MVN命令执行解密操作。细节如下:
  在使用过程中,我遇到了许多不可预测的问题,并总结了它是为了促进读者的参考。
  官方描述,3.0之后的默认支持算法是pbewithhmacsha512andaes_256。该加密方法由SHA512加上AES高级别加密组成。它要求JCE(Java加密扩展)支持力量的无限强度。
  解决方案:
  如果密钥是在代码或配置文件中写入的,则一旦代码泄漏,则其他人可以使用秘密来解密我们的密文,以便不存在敏感信息加密的效果,因此无法清楚地制定秘密键text.表单存储在代码或配置文件中,并在下面介绍了安全存储密钥的形式。
  方法1.将密钥作为命令行参数(建议)作为程序启动,示例如下:
  方法2.将密钥作为环境变量(推荐)启动时将键放入程序开始时,示例如下:
  方法3.自定义加密,解密逻辑(此自定义代码,本文不会在本文中解释,您需要重新解释文章的详细说明)
  由于开发商的遗漏,源代码未意外地提交给开源仓库的消息不是少数。作为一个开发团队,如何采取一些有效的措施来最大程度地减少这种情况?除了对本文中描述的敏感信息的加密以及对密钥的合理保存之外,还有以下一些方法可以参考。
  方法1.更具标准化的代码提交,推送系统和培养开发人员的安全意识:除了代码的意图外,很多时候,大多数是由偶然的方式引起的,以控制权限以防止代码泄漏。
  方法2.合理使用git忽略文件(.gitignore):通过gitignore文件配置匹配规则,以最大程度地将敏感信息上传到Git Warehouse。
  方法3.在第三方工具的帮助下,检测代码在提交和推送过程中是否是敏感数据:常见的git-secrets,将在提交之前对其进行测试。敏感的信息,然后他们将拒绝提交。
  方法4.代码审查代码:团队负责人和成员可以相互合作,以检测当代码合并时是否存在敏感数据。
  在撰写本文的内容时,我不小心看到了一条消息:Nginx的父亲被俄罗斯警察带走,因为他的老所有者Rambler报告说,Nginx是在他的工作期间开发的软件。Rambler相信它应该拥有它的所有权软件代码。
  您如何看待此事件?程序员应该在就职典礼期间的商业时间开发或编译吗?欢迎在文章中留言。
  源代码安全意味着技术公司的竞争力和生活方式。一旦泄漏,该项目就会失败,这可能会导致公司失败。他们还应始终培养自己的安全意识,并在编码时避免相应的风险。
  如果文章对您有所帮助,请喜欢我并遵循。如果您有任何疑问,请添加博客作者进行交流。
原始:https://juejin.cn/post/7100729419718721544