使用中的一些坑

方式2、降低jasypt的版本 - 使用2.x的版本

2、加解密秘钥如何存储

  「如果秘钥写在代码或者配置文件,一旦代码泄露,那别人就可以使用秘钥解密我们的密文,这样对敏感信息加密的作用就不存在了」,因此,秘钥不能以明文形式存储在代码或者配置文件中,下面就介绍一些安全的存储秘钥的形式。

  「方式1、把秘钥当做程序启动时的命令行参数(推荐),示例如下:」

java -jar xxx.jar --jasypt.encryptor.password=秘钥

  「方式2、把秘钥当做程序启动时环境变量(推荐),示例如下:」

java -Djasypt.encryptor.password=秘钥 -jar xxx.jar

  方式3、自定义加密、解密器逻辑(这个自定代码,本文不展开讲解,后续有需要重开一篇文章详细讲解)

如何避免Git泄露

  因为开发者的疏漏,不小心将源码提交到开源仓库中的新闻不在少数,「作为一个开发团队,如何采取一些有效的措施去最小程度防止出现这种情况呢?」 除了本文介绍的对敏感信息加密,并合理保存秘钥外,还有以下的一些方式可以参考。

  「方式1、更规范的代码提交、推送制度、培养开发者的安全意识:」 很多时候,代码的泄露除了故意为之外,大多数是因为不小心导致,因此在项目中可以通过合理管控权限的方式来防止代码泄露。

  「方式2、合理利用Git忽略文件(.gitignore):」 通过gitignore文件配置匹配规则,最大程度避免敏感信息上传到Git仓库。

  「方式3、借助第三方工具,在提交、推送时检测代码是否有敏感数据:」 常见的如git-secrets,在提交前会对变更内容做检测,如果检测到预期的提交内容可能包含敏感信息,那它们将会拒绝提交。

  「方式4、代码的Code Review:」 团队leader和成员之间可以互相合作,在代码推送合并时检测是否存在敏感数据,这样不仅可以排查出敏感数据,还能够学习彼此之间的一些编码技巧。

问题探讨

  在编写本篇文章内容时,无意中看到一个消息:Nginx之父被俄罗斯警方带走,「起因是因为其老东家 Rambler举报Nginx是他在就职期间的业务时间进行开发的一个软件,Rambler认为其应该有该软件代码的所有权。」

  针对这一事件大家有什么看法呢?「程序员在就职期间的业务时间开发或者编写的项目应该归属于公司?欢迎在文章下留言讨论。」

写在最后

  源代码安全在技术企业中意味着竞争力、生命线,一旦泄露,轻则造成项目失败,重则可能导致公司倒闭,这一关检测的重要性不言而喻,作为一名开发者,也应该时刻培养自己的安全意识,在编码时规避掉相应的风险。

  「如果文章对你有帮助,欢迎给我点赞、关注。如有疑问,欢迎添加博主进行交流。」