日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
使用這個(gè)Python模塊輸入不可見(jiàn)的密碼
  • 用 GPG 和 Python 的 getpass 模塊給你的密碼多一層安全保障。

密碼對(duì)程序員來(lái)說(shuō)尤其重要。你不應(yīng)該在不加密的情況下存儲(chǔ)它們,而且你也不應(yīng)該在用戶輸入密碼的時(shí)候顯示出輸入的內(nèi)容。當(dāng)我決定要提高我的筆記本電腦的安全性時(shí),這對(duì)我來(lái)說(shuō)變得特別重要。我對(duì)我的家目錄進(jìn)行了加密,但當(dāng)我登錄后,任何以純文本形式存儲(chǔ)在配置文件中的密碼都有可能暴露在偷窺者面前。

成都創(chuàng)新互聯(lián)主營(yíng)匯川網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app開(kāi)發(fā)定制,匯川h5小程序開(kāi)發(fā)搭建,匯川網(wǎng)站營(yíng)銷(xiāo)推廣歡迎匯川等地區(qū)企業(yè)咨詢

具體來(lái)說(shuō),我使用一個(gè)名為 Mutt 的應(yīng)用作為我的電子郵件客戶端。它可以讓我在我的 Linux 終端中閱讀和撰寫(xiě)電子郵件,但通常它希望在其配置文件中有一個(gè)密碼。我限制了我的 Mutt 配置文件的權(quán)限,以便只有我可以看到它,我是我的筆記本電腦的唯一用戶,所以我并不真的擔(dān)心經(jīng)過(guò)認(rèn)證的用戶會(huì)無(wú)意中看到我的配置文件。相反,我想保護(hù)自己,無(wú)論是為了吹噓還是為了版本控制,不至于心不在焉地把我的配置發(fā)布到網(wǎng)上,把我的密碼暴露了。此外,雖然我不希望我的系統(tǒng)上有不受歡迎的客人,但我確實(shí)想確保入侵者不能通過(guò)對(duì)我的配置上運(yùn)行 cat 就獲得我的密碼。

Python GnuPG

Python 模塊 python-gnupg 是 gpg 應(yīng)用的一個(gè) Python 封裝。該模塊的名字是 python-gnupg,你不要把它和一個(gè)叫做 gnupg 的模塊混淆。

GnuPG(GPG) 是 Linux 的默認(rèn)加密系統(tǒng),我從 2009 年左右開(kāi)始使用它。我對(duì)它很熟悉,對(duì)它的安全性有很高的信任。

我決定將我的密碼輸入 Mutt 的最好方法是將我的密碼存儲(chǔ)在一個(gè)加密的 GPG 文件中,創(chuàng)建一個(gè)提示我的 GPG 密碼來(lái)解鎖這個(gè)加密文件,然后將密碼交給 Mutt(實(shí)際上是交給 offlineimap 命令,我用它來(lái)同步我的筆記本和電子郵件服務(wù)器)。

用 Python 獲取用戶輸入 是非常容易的。對(duì) input 進(jìn)行調(diào)用,無(wú)論用戶輸入什么,都會(huì)被存儲(chǔ)為一個(gè)變量:

 
 
 
  1. print("Enter password: ") 
  2. myinput = input() 
  3. print("You entered: ", myinput) 

我的問(wèn)題是,當(dāng)我根據(jù)密碼提示在終端上輸入密碼時(shí),我所輸入的所有內(nèi)容對(duì)任何從我肩膀上看過(guò)去或滾動(dòng)我的終端歷史的人來(lái)說(shuō)都是可見(jiàn)的:

 
 
 
  1. $ ./test.py 
  2. Enter password: my-Complex-Passphrase 

用 getpass 輸入不可見(jiàn)密碼

正如通常的情況一樣,有一個(gè) Python 模塊已經(jīng)解決了我的問(wèn)題。這個(gè)模塊是 getpass4,從用戶的角度來(lái)看,它的行為和 input 完全一樣,只是不顯示用戶輸入的內(nèi)容。

你可以用 pip 安裝這兩個(gè)模塊:

 
 
 
  1. $ python -m pip install --user python-gnupg getpass4 

下面是我的 Python 腳本,用于創(chuàng)建密碼提示:

 
 
 
  1. #!/usr/bin/env python 
  2. # by Seth Kenlon 
  3. # GPLv3 
  4. # install deps: 
  5. # python3 -m pip install --user python-gnupg getpass4 
  6. import gnupg 
  7. import getpass 
  8. from pathlib import Path 
  9. def get_api_pass(): 
  10.   homedir = str(Path.home()) 
  11.   gpg = gnupg.GPG(gnupghome=os.path.join(homedir,".gnupg"), use_agent=True) 
  12.   passwd = getpass.getpass(prompt="Enter your GnuPG password: ", stream=None) 
  13.   with open(os.path.join(homedir,'.mutt','pass.gpg'), 'rb') as f: 
  14.     apipass = (gpg.decrypt_file(f, passphrase=passwd)) 
  15.   f.close() 
  16.   return str(apipass) 
  17.   
  18. if __name__ == "__main__": 
  19.   apipass = get_api_pass() 
  20.   print(apipass) 

如果你想試試,把文件保存為 password_prompt.py。如果你使用 offlineimap 并想在你自己的密碼輸入中使用這個(gè)方案,那么把它保存到某個(gè)你可以在 .offlineimaprc 文件中指向 offlineimap 的位置(我使用 ~/.mutt/password_prompt.py)。

測(cè)試密碼提示

要查看腳本的運(yùn)行情況,你首先必須創(chuàng)建一個(gè)加密文件(我假設(shè)你已經(jīng)設(shè)置了 GPG):

 
 
 
  1. $ echo "hello world" > pass 
  2. $ gpg --encrypt pass 
  3. $ mv pass.gpg ~/.mutt/pass.gpg 
  4. $ rm pass 

現(xiàn)在運(yùn)行 Python 腳本:

 
 
 
  1. $ python ~/.mutt/password_prompt.py 
  2. Enter your GPG password: 
  3. hello world 

當(dāng)你輸入時(shí)沒(méi)有任何顯示,但只要你正確輸入 GPG 口令,你就會(huì)看到該測(cè)試信息。

將密碼提示符與 offlineimap 整合起來(lái)

我需要將我的新提示與 offlineimap 命令結(jié)合起來(lái)。我為這個(gè)腳本選擇了 Python,因?yàn)槲抑?offlineimap 可以對(duì) Python 程序進(jìn)行調(diào)用。如果你是一個(gè) offlineimap 用戶,你會(huì)明白唯一需要的“整合”是在你的 .offlineimaprc 文件中改變兩行。

首先,添加一行引用 Python 文件的內(nèi)容:

 
 
 
  1. pythonfile = ~/.mutt/password_prompt.py 

然后將 .offlineimaprc中的 remotepasseval 行改為調(diào)用 password_prompt.py中的 get_api_pass() 函數(shù):

 
 
 
  1. remotepasseval = get_api_pass() 

配置文件中不再有密碼!

安全問(wèn)題

在你的個(gè)人電腦上考慮安全問(wèn)題有時(shí)會(huì)讓人覺(jué)得很偏執(zhí)。你的 SSH 配置是否真的需要限制為 600?隱藏在名為 .mutt 的無(wú)關(guān)緊要的電子郵件密碼真的重要嗎?也許不重要。

然而,知道我沒(méi)有把敏感數(shù)據(jù)悄悄地藏在我的配置文件里,使我更容易把文件提交到公共 Git 倉(cāng)庫(kù),把片段復(fù)制和粘貼到支持論壇,并以真實(shí)好用的配置文件的形式分享我的知識(shí)。僅就這一點(diǎn)而言,安全性的提高使我的生活更加輕松。而且有這么多好的 Python 模塊可以提供幫助,這很容易實(shí)現(xiàn)。


標(biāo)題名稱(chēng):使用這個(gè)Python模塊輸入不可見(jiàn)的密碼
URL地址:http://www.5511xx.com/article/dpoijjg.html