今天高高兴兴在GitHub上上传了一个之前做的项目的源代码,可是突然阿里云的安全中心突然就告诉我我的密钥信息被暴露了啊😧,把我可是吓得不轻。其实问题很简单,就是上传到GitHub的时候把yml文件也一起上传了。而yml文件里又配置有各种第三方服务的密钥啊,数据库密码啊之类的敏感信息,所以把我吓得立马把GitHub里的yml文件删除了,可是后来又害怕上传留下了变更记录会被人看到,无奈还是把项目仓库直接删掉了。
这个问题虽然不难解决,但要是犯了可就算是一个很危险的行为了。所以在这里给出两种比较简单的解决方法。
方法一:直接不上传任何资源配置文件(不推荐)
操作很简单,只需要在项目中的.gitigore
文件中加上下面这段内容即可,如果还有其他文件也含有敏感信息也根据匹配规则添加至.gitigore
中即可。
*.yml
*.yaml
*.properties
缺点:该方法虽然足够安全,但由于根本没有上传配置文件,会导致无论是别人想克隆你的项目来学习还是你自己换了设备要拉取项目都无法直接运行。而且配置文件里面不止有敏感信息,还有很多其他的配置,如果不上传资源配置文件,这些配置都得重新写一遍,项目太复杂的话还不一定能写全,写对。而且在还是需要在代码里写自己的敏感信息也确实不太好。所以我更推荐下面一种方法
方法二:yml读取系统环境变量(推荐)
首先我们配置一下系统环境变量(以windows为例,其他同理),可以使用用命令行的setx命令的方式,也可以直接右键此电脑
->属性
->高级系统设置
->环境变量
进入到环境变量配置界面
比如我们新建一个PASSWORD
变量
确定之后记得重启电脑使配置生效。
然后我们打开我们的配置文件使用${变量名}
的格式来读取即可,当然我们也可以使用${变量名:默认值}
的格式为其指定默认值,例如下面这段配置datasource的代码。
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://${MY_HOST:localhost}:3306/autumn_cloud?characterEncoding=utf-8&useSSL=false
username: ${MYSQL_USERNAME:root}
password: ${MYSQL_PASSWORD:root}
总之,无论使用哪种方法,大家都不能忘记在网络上要保护好自己的个人信息。千万别和我一样傻😓
为什么我测试不可,不管是windows端还是Linux上都读取不到系统环境变量,项目启动起来,一连接mysql就报错
我知道问题出在哪里了,博主的教程没有问题,但是设置完系统的环境变量之后一定要重启idea或者是重启系统,让环境变量生效
感谢提醒,写的时候忘写这一步了,现在已经加上了
另外我还发现有一种方式,可以直接对配置文件中的敏感信息进行加密,使用的是jasypt,springboot里面也有对这个项目进行整合,使用起来也挺方便的