在Web应用程序源代码中存储密码是否安全?

Bla*_*ine 10 security

所以我有一个Web应用程序,它集成了几个需要身份验证的API和服务.我的问题是,在我的源代码中以纯文本格式存储我的身份验证凭据是否安全? 我该怎么做才能安全地存储这些凭据?

我认为这是一个常见的问题,所以我希望看到一个解决方案来确保答案中的凭据.

回应评论:我经常使用PHP,Java和RoR

我希望看到更多的选票来回答这个问题.

mic*_*lik 6

这是我们对密码的处理方式.

$db['hostname'] = 'somehost.com'
$db['port'] = 1234;

$config = array();
include '/etc/webapp/db/config.php';

$db['username'] = $config['db']['username'];
$db['password'] = $config['db']['password'];
Run Code Online (Sandbox Code Playgroud)

除了webserver用户之外,没有人可以访问/etc/webapp/db/config.php,这样就可以保护开发人员的用户名和密码.

  • 如果您可以访问源代码,则只需从阵列中打印出密码,或将其放入文件中,或者在代码投入生产后通过电子邮件发送. (5认同)

Wil*_*ung 5

不将PW存储在代码中的唯一原因仅仅是由于配置问题(即,需要更改密码,并且不希望重建/编译应用程序)。

但是来源是“安全敏感”内容(例如密码,密钥,算法)的“安全”场所吗?当然是这样。

显然,安全敏感的信息需要适当地保护,但这是基本事实,无论使用什么文件。无论是配置文件,注册表设置还是.java文件或.class文件。

从架构的角度来看,出于上述原因,这是一个坏主意,就像您应该避免在代码中“硬编码”任何“外部”依赖项一样。

但是敏感数据就是敏感数据。将PW嵌入到源代码文件中会使该文件比其他源代码文件更敏感,并且如果您这样做,我认为所有源代码都与密码一样敏感。

  • “不将PW存储在代码中的唯一原因仅仅是因为配置问题”-**否**。开发人员不一定获得生产密码。这是不将密码放入代码中的重要原因。不要以为所有组织都像您一样运作。 (7认同)

Bla*_*ine 2

看来答案如下:

  1. 不要将凭据放入源代码中,但是......
  2. 将凭据放入配置文件中
  3. 清理日志文件
  4. 在配置上设置适当的权限/所有权

可能更多取决于平台...