2011-11-10 9 views
3

私はif文でパスワードを使用する方法を探していました。明らかに、if theRawInput == theCorrectPassword:は非常に安全です。何か案は?私はこのトピックで他の質問を見たことがありますが、彼らはすべて、非常に安全ではない(私は自分のコンパイルされたスクリプトのパスワードをパスワードを使わずにクラックした)base64を提案します。Pythonでのリアルセキュリティ

答えて

6

攻撃者がパスワードデータベースにアクセスできる場合、パスワードを隠す唯一の方法は、ハッシングです。これはまだよく選ばれたパスワードに対して助けないこと

import hashlib 
salt = 'uphi8eiV' 
hash = 'a7a2a98cc06f5b2935db5d2866670cc8b48116022e5bc30095b6167ddc2f3f96' 
if hashlib.md5.hexdigest(salt + rawInput).hexdigest() == hash: 
    print('Correct password') 

注意:一般的なハッシュテーブルに頼るから攻撃を防ぐためにsaltが含まれます。これらのために、攻撃者がパスワードデータベースにアクセスできないことを確認してください。潜在的な攻撃者がプログラムを実行できるようにし、プログラムが操作するデータにアクセスしないようにするには、そのデータを認証自体を実行するリモートで保護されたサーバープログラムに移動する必要があります。

+0

OKですが、終了したらコードを隠す方法はありますか?私はすでに.pycにコンパイルしようとしましたが、私はまだほとんどのスクリプトを読むことができます。私もchmodを実行専用にしようとしましたが、実行は読み込みに依存しています。答えをありがとう! – tkbx

+2

@ lucase.62あなたのコードを読めない攻撃者に依存する場合、あなたのセキュリティは健全ではないかもしれません。あなたができることは、ユーザーが自分のプログラムを実行するために使用できる安全なサーバーを実行することです。特定の設定なしの多目的プラットフォーム(Windows、GNU/Linux、Mac OS Xなど)では、本当に*複雑な問題ですが、読めない実行ファイルを提供することはできません。 – phihag