unix password service for storing plain-text password in php web application?
是否有一个Unix服务,或者至少有一个我可以拼凑在一起的服务,用于存储PHP Web应用程序的纯文本密码?
在撰写这个问题时,我发现C提供了一种以加密格式存储密码的服务。
我必须存储纯文本密码,因为应用程序连接到各种FTP服务器。并非所有这些服务器都配置为使用公钥。我要保护的两个向量是数据库转储和从文件系统上的文件获取纯文本密码的人。
我想知道服务器操作系统本身是否可以为运行应用程序的用户存储加密字符串——apache、www-data或其他人。我知道这样的系统仍然容易受到访问这些帐户或上载恶意PHP脚本的人的攻击,但我认为,在我们当前的实践中,这些风险是可以接受的。我只是希望不要将明文密码存储在数据库或文件系统中。
- 你认为系统把密码存储在哪里?
- 我不明白这个问题——你说的是哪个密码?shell帐户密码散列存储在/etc/shadow中,但无法使用散列登录到远程服务器:.(
- "我只是希望不要将明文密码存储在数据库或文件系统中。"系统将密码存储在数据库或文件系统中。你一无所获。
- 我希望在数据库或文件系统中存储一个可逆加密的密码,并且只能通过访问运行Web服务的shell帐户来解密。我知道这不是防弹保安。我只是不希望从数据库转储或文件系统备份中泄露密码。
- 这个问题有帮助吗?stackoverflow.com/questions/6038798/…
- @mv确实有帮助——但是我该如何让运行在Apache用户下的Apache进程访问根目录所拥有的文件呢?集体烫发?
- 在这个问题中,守护进程作为根目录运行,所以文件应该由根目录拥有是有意义的。在这种情况下,您可以将文件的所有权转换为root:apache,并授予组只读访问权,或者使用apache:apache,然后删除对组和世界的所有访问权。
- 另请检查:uranus.chrysocom.net/linux/php/passwords.htm一个Apache模块,该模块读取根拥有的配置文件(启动时)以及允许的php脚本的密码和位置,然后如果它们在允许的位置,它将它们提供给Web应用程序。(这个模块看起来很旧,我不知道它是否可以与当前的Apache版本一起使用)。
根据您的问题,我假设您使用的是Apache。ApacheConfig文件应该只能由根目录读取,所以这里存储的任何信息都应该是非常安全的。如果有人获得了根访问权限,他们可能无论如何都能提取密码。
您可以使用apaches setenv设置环境变量:
1
| SetEnv mySQL_PASS somePassword |
这对于使用$u server superglobal的PHP是可用的。
1
| echo $_SERVER['mySQL_PASS']; |
号