web-dev-qa-db-ja.com

GitHubのようなサイトでパスワードをプレーンテキストで保存するのはどのくらい危険ですか?

私の会社で取り組んでいるいくつかのプロジェクトのために、GitHubにいくつかのプライベートリポジトリを設定しています。これらのアプリケーションはデータベースに接続し、config.phpというファイルに(プレーンテキストで)データベース認証資格情報を保存しています。

私のコードがGitHubのサーバー上にあるとすると、これはどのくらい危険ですか?私の側からは、リポジトリへのアクセスを許可した人だけがこの情報を見ることができることを知っていますが、他の漏洩の原因について心配する必要がありますか?

11
karancan

これは、分解すべきいくつかの側面を持つ興味深い質問です。

あなたが尋ねた最初の質問は「これはどれほど危険なのですか?」答えは「とても」です。これらの資格情報を、ユーザーが制御および管理しないサードパーティのサービスに公開すると、リスクが高まります。資格情報が公開される可能性のある方法は多数あります。サービスの侵害、サービスアカウントの侵害、サービスでの認証の失敗、ネットワークの盗聴(SSL/TLSがコードの提供に使用されていない場合)、間違った人へのアクセスの許可などです。

基本的に、公開されている資格情報を検討します。

ひどいですね。たぶんそうではないかもしれません...では、「私はそのリスクに満足していますか?」他の緩和策がある場合は、それで大丈夫かもしれません。これらの資格情報を使用できる場所を(おそらくIPホワイトリストで)制限すると、資格情報を盗むのにあまり役立ちません。このサービスは非常に価値が低くなる可能性もあり、セキュリティを追加することは経済的に意味がありません。妥協からの回復のコストが10ドルで、セキュリティを追加すると100万ドルかかる場合は、リスクを負うことになります。 (とはいえ、ユーザーまたはユーザーの情報を保護することについてユーザーに約束した場合、コストに関係なく、その約束を守ろうとする倫理的義務があります。)

追加の考え:

「私が会社のために取り組んでいるプロジェクト」-あなたは、あなたが働いている会社に代わってこれを行っています。おそらく、それらにはポリシーまたは許容できる慣行があります。それが事実である場合、それらはあなたが快適であるものよりも優先するべきです。あなたが作成しているリスクはあなたの会社とその評判に影響を与え、会社は最終的な電話をかけるようになります。

ルーカス・カウフマンは良いアプローチを提案しています。効果があるかどうかはわかりませんが、導入プロセスに効果があり、リスクを快適なレベルまで軽減する緩和策を見つけることが重要です。

8
u2702

これを行うだけでなく、さまざまな場所からGithubに保存されているプロジェクトで作業します。しかし、私のコードが受け入れられるか生産されると、パスワードはランダムに変更されます。したがって、テスト/開発では、データベース資格情報がそこにあるかどうかは特に気にしません。これは、それらの資格情報が私の開発マシンでのみ有効であり、そこにあるデータには機密情報がないためです。

7
Lucas Kauffman

(緩和された?)レベルのセキュリティニーズがリポジトリにパスワードを保存することを許可するかどうかに関係なく、それを実行する必要は全くありません。

私は、phpスクリプトから使用されるデータベースパスワードで同じ問題に遭遇しました。私の答えは、ランダムなパスワードを自動的に生成する単純なphpスクリプトを作成することでした。アイデアは、最初にソースをダウンロードした直後に、パスワードジェネレーターを1回実行して、ローカルパスワードを生成することです。これらがリポジトリにプッシュされることはありません。コードが他の場所(コラボレーターまたは本番サーバー)でダウンロードされた場合、別のパスワードセットを取得するには、ジェネレーターをローカルで1回実行する必要があります。

自分で実装するのが面倒な場合は、コードを使用してください(現在、データベースとphpインタープリターが同じサーバーで実行されていると想定しています)。 https://bitbucket.org/steinb/nopassword

2
pyramids

パスワードanywhereをプレーンテキストで保存することは常に危険です。現在、これがphpで可能かどうかはわかりませんが、.NETでは事実上、構成ファイルを暗号化できることを知っています。

0
Four_0h_Three