想在开源项目里用比较正规的流程储存密钥等敏感数据,但是实习经验不多,自己做的过程中还是挺多问题的,有没有大佬讲讲一般商业公司是怎么处理的。想学习一个一般商业公司的还可以的安全管理实现,主要是像大公司或者云平台那种管理咱也没那个成本搞,搞了也用不上。
目前我的操作方法就是注入数据库密码等等把密文写到配置文件里,然后在代码里读取并解码,就还原成真实密码。唯一好处可能是密文和代码分离了,方便管理。但是密文和密钥又都写在一块,解码方式也很明确,感觉还是意义不大。如果说真的是为了对抗网络攻击的话,那代码泄露和配置文件泄露的安全损害级别应该是一样的,对方有能力获取你的代码又怎么会没能力获取配置文件,还不是会导致所有原文泄露?
在用户管理方面,比如 nginx 是 A 用户启动的,业务是 B 用户启动的,给密钥文件夹加上 B 的只读权限也许有用。不过说实在的既然只用 nginx 做路由,业务过于单纯,实在是想不到它有什么潜在风险。毕竟全球运行这么多年了,好像也没听说过哪个 0day 漏洞导致 nginx 本身出问题的。
还有一个处理方案可能是配置文件只存密文,在每次服务启动时管理员手动输入密钥,但是现在服务都做的容器化,每次启动输入既麻烦又不好管理,我觉得应该没有人实际上是这么操作的。
最后我还想知道一般安全设计上是否需要防范内存攻击,我的程序把密码原文读取到内存,需要防止有人把内存 dump 出来做分析吗,这是否意味着相关内存需要尽快被销毁?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.