簡體   English   中英

python使用pickle文件存儲用戶名和密碼是否安全?

[英]is it secure for python use pickle file to store the username and password?

python使用pickle文件存儲用戶名和密碼是否安全?

我試圖找出在python中存儲用戶名和密碼的良好做法是什么? 我可以只使用泡菜文件嗎?

謝謝!!

否。將用戶名和密碼存儲在pickle文件中並不安全。

因為在一台計算機上創建的pickle文件可以在另一台計算機上輕松讀取。 可以訪問該文件的任何人都可以使用與您用來對其進行腌制相同的腌菜程序來對其進行腌制。

理想情況下,您應該使用鹽和密鑰對密碼進行編碼。 bcrypt庫可以做到這一點。

理想情況下,您不應將密碼存儲在文件中。 相反,數據庫是一個更安全的選擇。 還使用標准庫,這些庫會自動使用鹽對哈希進行哈希處理並將詳細信息存儲在數據庫中。

使用se-linux確保數據庫受密碼保護並且系統安全。 還有什么?? 是的,避免存儲密碼。 盡可能給Google / Fb / Twitter登錄。 :)

在下面提供示例以說明Vikash的出色答案。

使用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

現在有了鹽和哈希密碼,您需要將其存儲在磁盤上的某個位置。 無論將它存儲在哪里, 都應將文件權限設置為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')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM