2016-12-09 8 views
0

私はpythonを学んでいるので、私は自動的に私のためにGmailの電子メールを送信するスクリプトを作ろうと思っていました。パスワードをPythonで確保する

私のメールを自動的に送信するには、自分のGmailアカウントにログインとパスワードを送信する必要があります。

私はここでいくつかのガイドを読みましたが、passlibは良い選択です。しかし、私はまだそれを設定する方法について少し混乱しています。

  1. 私は結果が私のLinux VM内の隠しファイルに保存されます
  2. 私のパスワードを暗号化するためにPASSLIBを使用しています。
  3. スクリプトが実行されるとき、ハッシュされたパスワードのためにVMの隠しファイルを解析する必要があります。
  4. ここで私は混乱しています。私はそれを復号化して送信する必要があると思いますか?それはむしろ安全ではないですか?それとも復号化せずに送ることができますか?うまくいけば、Gmailはそれを解読できますか?

私はSMTPライブラリを使用しています。

server = smtplib.SMTP('smtp.gmail.com', 587) 
server.ehlo() 
server.starttls() 
server.login(gmail_sender, gmail_passwd) 

おかげ

+1

はい、それは安全ではありません。ただし、パスワードを暗号化している場合は、コードの横に*を格納しておきます。 – jonrsharpe

答えて

2

おそらく実際にはPasslibは正しい選択ではないでしょう。これは、主にパスワードの一方向ハッシュに関係しています。結果のハッシュを使用して、ユーザー提供のパスワードがハッシュと一致するかどうかを確認できますが、ハッシュを復号化することはできません。 (以前のPasslibリリースでは、.encrypt()という名前のメソッドが間違っていましたが、Passlib 1.7ではその名前が.hash()に変更されました)。

あなたはおそらくあなたのユースケースに応じて、2つのうちの1つ欲しい:

  • keyringは、OS制御の「財布」に&保存するパスワードを保存するためのPythonインタフェースです。これは、Windows、Linuxなどでクロスプラットフォームで動作します。

ただし、ログインしたデスクトップセッションの外で起動されたスクリプトからパスワードを実行する必要がある場合は、使用するのが難しいことがあります。

この場合、ストレージに使用している認証情報を暗号化し、コマンドラインプロンプトまたはenv varなどからスクリプトの呼び出し時に提供される1つのパスワードを選択してこれらの資格情報を復号することができます。

  • cryptographyは、このような処理を行うのに適しています。彼らはfernet encryptionヘルパーのような(あまりにも多くの)暗号の経験を必要としない多くの高水準な機能を提供します。
+0

私は2番目のユースケースを見ています。ここでは、人間の介入なしにスクリプトを定期的に実行する必要があります。だから私は暗号を使用する場合、私はそれを暗号化し、どこかに格納し、その後、スクリプトを実行するときに暗号化されていない解読キーが提供される私のパスワードを与えるだろうか? –

1

パスワードが平文で送信されていないので、STARTTLS()呼び出しは、暗号化されたSSL/TLS接続を設定します。はい、それをserver.login()に送る前にパスワードを解読する必要があります。あるいは、パスワードを環境変数に格納してPythonに読み込むこともできます。これは安全ではありませんが、実装がはるかに簡単です。

+0

またはドットファイル内にあります。スクリプトにパスワードをハードコードする以外は何も:) –

関連する問題