ユーザー名とパスワードを保存するためのPython用のpickleファイルは安全ですか?ユーザー名とパスワードを保存するためにpythonを使用するpickleファイルに対して安全ですか?
私は、ユーザー名とパスワードをPythonで保存するのがよい方法を見つけようとしていますか? pickleファイルを使うことはできますか?
ありがとうございます!
ユーザー名とパスワードを保存するためのPython用のpickleファイルは安全ですか?ユーザー名とパスワードを保存するためにpythonを使用するpickleファイルに対して安全ですか?
私は、ユーザー名とパスワードをPythonで保存するのがよい方法を見つけようとしていますか? pickleファイルを使うことはできますか?
ありがとうございます!
いいえ、pickleファイルにユーザー名とパスワードを格納するのは安全ではありません。
あるコンピュータで作成されたピクルスファイルは、別のコンピュータで簡単に読み取ることができるため、ファイルにアクセスできる人は誰でも、それをピクルするのに使ったのと同じピクルプログラムを使ってピクルを解除することができます。
理想的には、塩と秘密鍵を使用してパスワードをエンコードする必要があります。これを行うライブラリはbcryptです。
パスワードはファイルに保存しないでください。むしろ、データベースはより安全な選択肢です。塩を使用して自動的にパスワードをハッシュし、データベースに詳細を格納する標準ライブラリも使用します。
se-linuxを使用してデータベースがパスワードで保護され、システムが安全であることを確認してください。ほかに何か??パスワードの保存は避けてください。可能な限り、Google/Fb/Twitterにログインしてください。 :)
下記のVikashの優れた答えに例を挙げてください。
Secure Password Storage in Python:塩とハッシュされたパスワードを持っている
import bcrypt
import hmac
from getpass import getpass
master_secret_key = getpass('tell me the master secret key you are going to use')
# Calculating a hash
hashed = bcrypt.hashpw(password, bcrypt.gensalt())
# Validating a hash (don't use ==)
if (hmac.compare_digest(bcrypt.hashpw(password, hashed), hashed)):
# Login successful
さて、あなたはディスク上のどこかに格納する必要があります。あなたがこれまで保管していたところでは、you should set the file permissions to 600(ユーザーだけが読み書きできます)。パスワード変更を許可しないことを計画している場合は、400が優れています。
import os
import stat
# Define file params
fname = '/tmp/myfile'
flags = os.O_WRONLY | os.O_CREAT | os.O_EXCL # Refer to "man 2 open".
mode = stat.S_IRUSR | stat.S_IWUSR # This is 0o600 in octal and 384 in decimal.
# For security, remove file with potentially elevated mode
try:
os.remove(fname)
except OSError:
pass
# Open file descriptor
umask_original = os.umask(0)
try:
fdesc = os.open(fname, flags, mode)
finally:
os.umask(umask_original)
# Open file handle and write to file
with os.fdopen(fdesc, 'w') as fout:
fout.write('something\n')
だけで永続ではなく、暗号化のためです。そのファイルにアクセスできる人は誰でもPythonを起動し、それをアンピクルできます。 – TigerhawkT3