最近在学 springboot 正好公司有个需求 简单点说就是业务系统依赖这个 jar 包之后 就会多出来一个接口 这个接口的返回值是所在的业务系统的所有 api 接口 然后就开发了一个 jar 包(类似于自定义 starter 的那种) 之后各业务系统都引入了这个依赖
我这边是写了一个 controller 然后通过 spring.factories 的方式把这个 controller 注入到引用的业务系统的容器中实现的 写好之后 deploy 到了私服 之后大家谁需要都可以引用
如果在 jar 包中能通过这种方式向引用 jar 包的系统中注入一个接口,那么就可以通过 @value 的方式获取配置文件中的所有数据 包括数据库链接、用户名、密码等通用的配置 获取配置之后就可以通过 jdbc 连接数据库然后进行数据的导出 这就会引发一个数据泄露的问题
这是一个 jar 包 这个包的 groupId 和 artifactId 是公开的 比如 我说的是比如哈 某个业务系统的开发人员想要导出数据进行售卖 但是他没法直接查数据库 然后他自己本地写了一个项目 把 groupId 和 artifactId 写成和我这个 jar 包一样 然后在项目中通过 @value 的方式获取了配置之后查数据 那这样就完全可以神不知鬼不觉的把数据盗走对不对
最最最最重要的是 如果任何公司内部的人发现了这个思路 他都可以这么做 而且这么做基本没有被查到的概率 即使是被查到了 也会因为私服密码是通用的而无法定位到具体是哪个人上传过有问题的 jar 包 因为这个操作并不需要把代码推到 git 不需要在生产环境的 Jenkins 进行部署 他需要做的就是用同样的 groupId 和 artifactId 再上传一遍 jar 包然后等待业务系统重启就 ok 了
今早在跟领导商量过之后已经把 jar 包从私服上紧急删除了 并且把 jar 包里的功能代码贴了出来 也通知了各业务系统 让他们把这个依赖移除 如果需要这块功能的话可以直接把代码贴在项目里
这种问题到底有没有可能发生 如果发生了 在大家上传私服用的是同一个账号密码的情况下 能不能查出来具体是谁上传的这个 jar 包
望大佬解惑 本人技术菜鸡 评论区勿喷 和平讨论哈
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.