java - 在公共(public)/不安全的网络上使用纯文本密码提交代码有多危险?如何正确处理代码中的密码?

标签 java git security version-control password-protection

因此,我的公司使用 Bitbucket Cloud 进行 SCM,而我在笔记本电脑工作站上使用 ScourceTree。我正在开发一个代码项目,该项目最初主要由其他人编写,目前我正在开发的软件使用纯文本配置文件将用户名和密码信息传递给程序,以用于连接到它的服务需求。

现在,我对这是一件非常糟糕的事情这一事实并不陌生,但作为一名独立开发人员,我还没有抽出时间来解决这个问题。 (尽管这绝对是一个高优先级)。

我今天想对配置文件进行更改,但我很犹豫,因为我正在一家咖啡馆的不安全网络上工作。这让我想知道:大多数基于云的代码服务(即 Bitbucket/Github)的安全性如何?在公共(public)网络上提交这样的代码有多危险?

我拥有出色的远程工作能力,并且不想让我的公司面临不必要的风险,从而影响我的工作。

因为我知道纯文本密码往往不是一个好主意,所以我也想知道应该如何解决这个问题。我正在开发的应用程序使用 java,密码位于属性文件中。有没有我应该了解的 java 库或实用程序(对 java 来说还是有点陌生​​)。

我希望这可以成为关心如何在代码(任何语言)中安全处理密码的初学者的一般答案。我也经常使用 C++ 和 PHP,所以我非常感谢关于如何用这些语言处理此类事情的建议。不需要极端的细节,只需要搜索关键字即可。它们是语言中内置的库或实用程序吗?

编辑:我知道 this SO question解释了在 Java 中处理我的情况的一个好方法,但是 a)关于 Bitbucket/Github 和 SourceTree 之间的网络安全问题是不同的,b)我要求提供有关跨语言的一般最佳实践的更多信息,而不是只是关于 java 的具体信息(尽管提供的链接对于解决 Java 特定情况非常有帮助)。

最佳答案

真巧,我们在工作中也遇到过类似的情况。我们决定解决这个问题的方法是让代码从未提交的外部明文密码文件中获取密码。 (将其添加到 .gitignore 或更好地将其移出源代码树。)任何想要使用该代码并且足够信任并拥有密码的人都需要通过 git 以外的方式获取该文件。

如果您想要一个安全存储密码的地方,可以使用 keepass,它具有适用于 Windows 和 Linux 的版本,以及它的一些衍生版本。它维护一个登录列表,列表中的每个条目都有一个“将密码复制到剪贴板”选项。一分钟后它甚至会从剪贴板中删除密码。但是,存储在其中的密码无法通过代码访问。

关于java - 在公共(public)/不安全的网络上使用纯文本密码提交代码有多危险?如何正确处理代码中的密码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42012684/

相关文章:

java - 使用 key 的 SHA512 散列

java - 有没有办法缩短 java.security.MessageDigest 生成的值?

java - WSSecurityException - 处理 <wsse :Security> header 时发现错误

java - 应用程序因 java.lang.SecurityException 崩溃

java - 不同客户端使用相同连接mysql JSP

ruby-on-rails - 突然无法推送到 heroku : "unable to negotiate key exchange method"

Git Windows 禁用密码提示 UI 但从 shell 获取密码提示

java - Spring MVC 缺少请求属性

java - Jmock/junit 测试

git - 使用 git-bundle 传输对多个分支所做的更改