首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保护系统与数据库之间的口令

如何保护系统与数据库之间的口令
EN

Stack Overflow用户
提问于 2018-06-14 20:58:37
回答 3查看 65关注 0票数 1

此登录角色将由应用程序用于所有操作,独立于登录的应用程序用户。

如何在应用程序代码中保护此登录角色密码?

EN

回答 3

Stack Overflow用户

发布于 2018-06-14 21:15:13

考虑使用yaml file来存储您的凭据,或者将它们放在.pgpass file中。

票数 1
EN

Stack Overflow用户

发布于 2018-06-14 21:15:09

您可以使用的主要三种身份验证机制大致按流行顺序排列为:

  1. 密码。在这里,您以某种方式将密码加载到应用程序中,并在连接到数据库时使用它。存储密码的一种简单方法是在受文件系统权限保护的文本文件中(类似于保护SSH私钥的方式)。
  2. LDAP。这要求您的网络上有一个LDAP服务器,但这在企业环境中是很常见的。它还需要在应用程序中加载密码。与常规口令机制的不同之处在于,数据库服务器不直接存储凭据或验证口令--它将这些委托给LDAP server.
  3. Kerberos.这需要在您的网络上安装Kerberos服务器。在这里,应用程序不需要加载密码;相反,将运行应用程序的用户(或服务帐户)必须首先使用Kerberos进行身份验证(通过向kinit键入密码或加载凭据文件)。

在这些服务中,我个人更喜欢Kerberos,如果该服务在相关网络上受支持的话。第二个最好的选择是LDAP,因为它允许集中控制密码更改和撤销等操作。第三个是常规的密码机制,它可以在任何环境下工作。

所有可用机制的详细信息都在这里:https://www.postgresql.org/docs/10/static/auth-methods.html

票数 0
EN

Stack Overflow用户

发布于 2018-06-14 21:23:39

你不能。

如果用户可以直接访问应用程序(他们可以直接启动它),那么应用程序中硬编码的所有内容都应该被用户视为可访问的。无论你能使用什么混淆方法,有决心的攻击者都能找到它(通过反编译器和调试器)。

如果存在断点,则一切都不同:

代码语言:javascript
运行
复制
front end application               back end application
 launched by user         --/-->   launched with a sytem user
  local machine                     local or remote machine

这通常是web应用程序的用例:用户没有访问应用程序代码的权限,也没有启动它,因此数据库密码可以保存在配置文件中-管理员始终可以访问它。即使所有这些都运行在同一台机器上,像样的操作系统也允许访问保护,以防止未授权的用户访问后端程序。对于后一种情况,前端和后端可以通过套接字、命名管道、消息或几乎任何其他IPC机制进行通信。

TL/DR:唯一安全的方法:

  • 将应用程序拆分为两个部分,一个是在不了解数据库服务器的用户帐户下运行的前端,另一个是在系统(非管理员)用户下运行的后端
  • 可确保普通用户无权访问后端应用程序文件
  • 将数据库密码存储在后端的配置文件中(从不在源文件中)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50858164

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档