2012-04-03 2 views
0

私は使用したいプログラム(私が書いたものではない)を持っています。私はプライベートにしておきたいユーザー名とパスワードを使ってオンラインサービスを認証します。認証情報は、コマンドライン引数として直接入力するか、プレーンテキスト構成ファイルを使用するかのどちらかの方法でプログラムに渡すことができます。プレーンテキストファイルまたはコマンドラインを使用して資格情報をプログラムに安全に渡す

このプログラムの起動を管理し、自分の資格情報を他のユーザーの目に触れないようにするPythonスクリプトを作成したいと考えています。私はLinux環境で動作しています。コマンドラインのアプローチに関する私の懸念は、プログラムを実行するために使用されるコマンドラインが/procファイルシステムを介して他のユーザーに見えるということです。同様に、プレーンテキストの設定ファイルは、sysadminのような適切な権限を持つ人が読むことができます。

これを行うには良い方法はありますか?コマンドラインで使用されている引数を他のシステムから隠蔽する何らかの方法がある場合や、一度しか読み取れない設定ファイルを生成する方法がある場合(概念的には、スクリプトの設定データをプログラム)、私は自分の資格情報が潜在的に誰かがシステム上で読めるように座っている状況を避けるだろう。

+0

まだあなたのpythonスクリプトに表示されないでしょうか? –

+0

申し訳ありませんが、私はそれについて詳述するつもりでした。私の計画は、Pythonスクリプト用の暗号化された構成ファイルに資格情報を格納し、平文のどこにも格納されないようにすることです。 –

+0

キーはまだPythonスクリプトに保存されていないので、両方にアクセスできる誰もが設定ファイルを復号して元のコンテンツを取得できるのですか? –

答えて

0

非常に問題です。問題のプログラムのソースコードにアクセスできる場合、起動後にargv [0]を変更することができます。 * nixのほとんどのフレーバーで、これは動作します。

設定ファイルのアプローチは、セキュリティの観点からは優れています。

実行時に設定ファイルを指定できる場合は、一時ファイル(mkstemp参照)を生成し、そこにパスワードを書き込んでサブプロセスを呼び出すことができます。小さな遅延を追加して(サブプロセスに時間を与えて)、設定ファイルを削除することさえ可能です。

もちろん、最善の解決策は、標準入力からパスワードを読み取るために、問題のプログラムを変更することです(しかし、あなたはすでに知っていたように聞こえる)

0

あなたはこのような状況で行うことができる唯一のことについてで資格情報を格納していますテキストファイルを作成してから、そのマシンの他のすべてのユーザーが読み取りまたは書き込みのアクセス許可を拒否します。実際にこのスクリプト用のユーザーだけを作成してください。暗号化はあまり効果がありません。なぜなら、スクリプト内に鍵を持たなければならないか、またはスクリプトがそれを読むことができるため、同じ基本攻撃です。

関連する問題