postgresql pg.Pool 连接池凭据的安全性
Posted
技术标签:
【中文标题】postgresql pg.Pool 连接池凭据的安全性【英文标题】:Security of postgresql pg.Pool connection pool credentials 【发布时间】:2018-03-25 23:38:13 【问题描述】:如何在 node.js 实现中安全地存储 postgresql pg.Pool 连接池凭据?在将配置对象设置为传递给 pg.Pool 后,它以未加密的方式存储在 Pool 对象中,这意味着它在内存中始终可见。
pg.Pool 是否有一个回调机制,它可以调用您的函数以仅在需要凭据时动态解密,或者以某种方式将其保护到其他地方而不是将其存储在池对象中,目的是保留它在未加密状态下长时间内存不足?
请指教。
【问题讨论】:
但这严格来说是服务器端,您不会将其泄漏到客户端。那你有什么顾虑? 我担心的是,如果黑客能够获得内存转储,那里将有一个纯文本密码来访问数据库,以及数据库名称、用户名等。我是询问目前是否有任何方法可以防止此漏洞?我还建议可以防止此漏洞,并且应该有办法做到这一点。 【参考方案1】:pg.Pool 是否有一个回调机制,只有在它需要凭据时,它才能调用你的函数进行动态解密
没有这样的事情,因为连接详细信息仅适用于服务器端。
您只能在创建 Pool
对象之前解密连接。之后,它将由对象内部保存。
在公司环境中,您的数据库服务器应该简单地驻留在 DMZ 中。
【讨论】:
是的,这是我的理解。我只是想知道是否有另一种方法可以保护池配置详细信息免受内存转储攻击,因为它很容易受到攻击。在共享主机环境中,这将成为一个更大的问题,因为机器的安全性和监控不在您的掌控之中。 @CaptAmericode 目前唯一可能的方法是保护服务器。一旦被破坏 - 你就暴露了。这就是为什么正确托管安全事物需要 DMZ 中的服务器。 感谢您添加有关 DMZ 的信息。如果您将此信息添加到您的答案中,我会接受它,因为我认为它会使您的答案更完整。以上是关于postgresql pg.Pool 连接池凭据的安全性的主要内容,如果未能解决你的问题,请参考以下文章
python DBUtils 线程池 连接 Postgresql(多线程公用线程池,DB-API : psycopg2)
具有 postgresql 9.4 和 JSON 字段支持的 Peewee 连接池
Spring Boot 2.1.4 + JDBI + HikariCP + PostgreSQL 发生错误后连接未释放到池