私は、この例ではユーザ名とパスワードを言うように要求するプログラムを作成しようとしていますが、これを保存します(私はテキストファイルにします)。私が苦労している分野は、テキストファイルに保存されているパスワードをユーザが更新できるようにする方法です。私はこれをPythonで書いています。ユーザー名とパスワードを保存し、ユーザーの更新を許可します。 Python
答えて
更新プログラムをテキストファイルで処理する方法に焦点を当てるように依頼したので、私は質問のその部分に焦点を合わせました。したがって、実際には、テキストファイルの長さと構造に影響を与える変更がテキストファイルでどのように変化するかについて、どのように回答するかに焦点を当てました。その質問は、パスワードであるテキストファイル内のものとは無関係です。 パスワードを保存する必要があるかどうか、またはパスワードを確認するために使用できる数量を保存する必要があるかどうかに関する重要な懸念事項があります。それは、あなたがしようとしていること、あなたのセキュリティモデルが何であるか、そしてあなたのプログラムが何をやりとりする必要があるかによって決まります。あなたは、問題のテキストファイルの更新部分に焦点を当てるように質問することで、問題の範囲外のすべてを支配しました。
あなたは、このタスクを達成するために、次のパターンを採用するかもしれません:テキストファイルが存在する場合、初めに
を参照してください。それを読んで、そうであれば新しいユーザーではなく更新をしていると仮定してください。
ユーザー名とパスワードを尋ねます。古い値の更新プロンプトで変更を許可する場合
テキストファイルを書き出します。
テキストファイルに格納されたものを更新するためのほとんどの戦略には、すべての更新時にテキストファイルを完全に書き換える必要があります。
これは単一のユーザーアプリケーションですか?あなたは
を苦労している場所あなたがより多くの情報1を提供することができた場合は、(ユーザー名とパスワードを持っている)、パスワード・ファイルを読み込むことができ - ユーザー認証は、テキストファイル での組み合わせにユーザー名とパスワードが一致した場合 - 場合には、ユーザーパスワードを変更したい場合、ユーザーは古いパスワードと新しいパスワードを入力します。ユーザー名と古いパスワードの組み合わせをテキストファイルのものと比較し、一致する場合は新しいものを保存します。
JSONを試してみてください。 JSONを編集する次に
{
"Usernames": {
"Username": [
{
"Password": "Password123"
}
]
}
}
: JSONファイルの例は、このことでしょう
jsonloads = json.loads(open('json.json').read()) #Load the json
username = input("Enter your username: ") #Get username as a string
for i in jsonloads["Usernames"]: #Iterate through usernames
if i == username: #If the username is what they entered
passw = input("New password: ") #Ask for new password
jsonloads["Usernames"][i][0]["Password"] = passw #Set the password
jsonFile = open("json.json", "w+") #Open the json
jsonFile.write(json.dumps(jsonloads, indent=4)) #Write
jsonFile.close() #Close it
break #Break out of the for loop
else: #If it remains unbroken
print("You aren't in the database. ")
user = input("Username: ") #Ask for username
passw = input("Password: ") #Ask for password for username
item = {"Password":pass} #Make a dict
jsonloads["Usernames"].update({user: item}) #Add that dict to "Usernames"
with open('json.json','w') as f: #Open the json
f.write(json.dumps(jsonloads, indent=4)) #Write
のようなものが動作するはずです、しかし、それをテストしていません。
また、必ずパスワードを暗号化してください。
import getpass
import os
import bcrypt
new=None
def two_hash():
master_key = getpass.getpass('enter pass word ')
salt = bcrypt.gensalt()
combo = salt + master_key
hashed = bcrypt.hashpw(combo , salt)
allow = raw_input('do you want to update pass ')
if allow == 'y':
new = getpass.getpass('enter old pass word ')
combo = salt + new
bcrypt.hashpw(combo , salt)
if (bcrypt.hashpw(combo , salt) == hashed):
new = getpass.getpass('enter new pass ')
print new
else :
pass
if __name__ == '__main__':
two_hash()
注1:私はいくつかの関数に私のコードを分割したかったが、私はそう_ **してください**ない**これまで**ストア
@Chrisチェックこのコードの一部を分離したいのですが、(塩)がどの関数でも変更され、ファイルに保存したいので、コードを更新して改善することができますit –
これは全く質問に答えるものではありません。テキストファイルと対話するのではなく、パスワード管理に重点を置いています。 –
@Sam Hartman [OK]を私たちはすることはできませんし、安全ではないテキストファイルで作業する必要はありません!クリスはテキストが安全ではないと言っており、安全な方法でパスワードを保管しなければならないのと同じように –
- 1. デモのユーザー名とパスワードを保存
- 2. Androidアプリにユーザー名とパスワードを保存
- 3. パスワードをユーザー名とは別に保存します。
- 4. UIWebViewはユーザー名とパスワードを保存しません
- 5. ユーザー名パスワードをブラウザに保存します。
- 6. 共有プリファレンスでユーザー名とパスワードを保存したい
- 7. pythonプログラムのユーザー名とパスワード
- 8. Python 3.6のユーザー名とパスワード
- 9. ユーザー名/パスワードをCookieに保存しようとしています。 JQuery
- 10. ユーザー名とパスワードを別々のデータベースに保存する
- 11. ユーザー名とパスワードの組み合わせを保存する
- 12. jqueryでブラウザのユーザー名とパスワードを保存する方法
- 13. 角度2 - 自動保存のユーザー名とパスワードを削除します
- 14. 機密情報(ユーザー名とパスワード)をweb.configに保存していますか?
- 15. ユーザー名/パスワードをハードコードしないでActive Directoryを更新する
- 16. パスワードを持たないユーザーに許可しますか?
- 17. PowerShell:スケジュールされたタスクのユーザー名とパスワードを更新しますか?
- 18. テーブルの作成と変更をユーザーに許可しますか?
- 19. Azure Key Vaultを使用してユーザー名とパスワードを保存する
- 20. キーチェーンを使用してxcodeにユーザー名とパスワードを保存する4
- 21. ユーザー偽装のパスワードを保存する
- 22. Pythonのユーザー名とパスワードに失敗しました
- 23. ログイン画面の作成、WPF、ユーザー名とパスワードの保存方法
- 24. firefoxはどのようにユーザー名/パスワードを保存しますか
- 25. Salesforceにはどこのユーザー名/パスワード/エンドポイントを保存しますか?
- 26. MeteorのloginButtonsテンプレートにユーザー名とパスワードを保存しない方法は?
- 27. Javaを使ってMacにユーザー名/パスワードを保存する
- 28. は、ユーザー名の文字のみを許可します。
- 29. RをAPIに接続し、ユーザー名とパスワードを渡します。
- 30. Meteor:loginWithGoogle更新の許可なしユーザーの範囲
いくつかの機能に分割のためにそれを助けることができませんパスワードはプレーンテキストである必要があります._あなたが書き込んだコードではなく、ハッシュして塩漬けする必要があります。利用可能な認証ライブラリはたくさんあります。とにかく、データベースをデータベースとして使用すると、苦労することはありません。データの追加、データの参照、データの変更、データの削除を簡単に行うことができます。 SQLiteはPythonに含まれており、使い方はかなり簡単です。 – Chris
Pythonに含まれている別の「データベース」は、[shelve](https://docs.python.org/3.6/library/shelve.html)です。これはSQLiteよりも簡単です。 –
@Chrisパスワードバリデーターとしては、単に「ハッシュと塩漬け」が不十分です。代わりに、約100msの間、ランダムな塩でHMACを繰り返し、塩をハッシュで保存します。 'PBKDF2'、' Rfc2898DeriveBytes'、 'password_hash'、' Bcrypt'、 'passlib.hash'などの関数を使うのが良いです。要点は、攻撃者が無差別にパスワードを見つけるのにかなりの時間を費やすようにすることです。 – zaph