2016-02-25 51 views
0

我有一個利用請求模塊創建POST請求的腳本。通過POST API請求更安全地存儲Python存儲密碼

密碼以純文本形式存儲在腳本中。

我擔心這是公然不安全的,但我不知道如何使它更安全。

我可以採取哪些措施以避免在腳本中以純文本形式存儲密碼以提出請求?

#Set request parameters 
url = 'https://apiexample.com/test' 
#ISSUE: password is plain text 
user = 'api_example' 
pwd = 'plaintextnopes' 

#Set proper headers 
headers = {"Content-Type":"application/json","Accept":"application/json"} 

#Build HTTP Request 
response = requests.post(url=url, auth=(user, pwd), headers=headers ,data=j) 

#Check for HTTP codes other than 200 
if response.status_code != 200: 
     print('Status:', response.status_code, 'Headers:', response.headers, 'Response Text', response.text, 'Error Response:',response.json()) 
     exit() 

編輯: 的帳戶是訪問記錄寫入到數據庫系統的用戶,這是靜態的,它不會改變。

回答

1

假設此腳本以交互方式運行,可以通過調用input()raw_input()(取決於您使用的Python版本),讓用戶通過鍵盤輸入密碼。

您可以將密碼存儲在單獨的文件中,該文件不是完全安全的,但可以讓您在不共享密碼的情況下共享腳本。

您可以獲取用戶名+密碼的base64編碼值,並將其直接包含在標題中,而不是通過auth=參數傳遞它們。然而,這隻能保護偶然窺探者的密碼;很容易從編碼值重建用戶名和密碼。

+0

該帳戶是有權將記錄寫入數據庫的系統用戶,這是靜態的,不會更改。我想我至少要將它存儲在一個單獨的文件中,並且包含在頭文件中的base64編碼值可能至少會更安全一些。爲了傳遞標題中的base64編碼值而不是auth參數,語法看起來如何?感謝您的建議! – pengz

+0

'headers = {...,'Basic:%s'%b64encode('%s:%s'%(user,pwd))}'' –