5
我正在試驗電子郵件python腳本,並想知道在編寫基於python的電子郵件腳本時,與登錄到網頁時憑證通過互聯網發送時相比,它的安全性較差?在下面的腳本中,用戶是否通過清除?Python smtplib安全
import smtplib
from email.mime.text import MIMEText
GMAIL_LOGIN = '[email protected]'
GMAIL_PASSWORD = 'amiexposed?'
def send_email(subject, message, from_addr=GMAIL_LOGIN, to_addr=GMAIL_LOGIN):
msg = MIMEText(message)
msg['Subject'] = 'Test message'
msg['From'] = from_addr
msg['To'] = to_addr
server = smtplib.SMTP('smtp.gmail.com',587)
server.ehlo()
server.starttls()
server.ehlo()
server.login(GMAIL_LOGIN,GMAIL_PASSWORD)
server.sendmail(from_addr, to_addr, msg.as_string())
server.close()
if __name__ == '__main__':
send_email('testing email script', 'This is a test message')
有一點需要注意 - 而且有點挑剔 - 如果你沒有通過密鑰/證書對來啓動,我不認爲它驗證了SSL簽名鏈,這意味着有人可以放置一個假的SSL服務器你的DNS和你的DNS可以連接到SSL,並給他們你的憑據。不過不太可能,這可能是值得指出的,因爲執行代碼審查的挑逗會讓你失望。默認情況下,Python只會啓動一個帶有簽名或未簽名證書的SSL連接。在開發過程中方便,在生產中不太棒。 – synthesizerpatel
爲了澄清synthesizerpatel的回覆,我想確認他描述的是一箇中間人攻擊的人,而不一定是一個用戶從上面的腳本獲取憑證並且以明文形式發送登錄信息的攻擊歸結爲數據包嗅探)。那是對的嗎? – Kryptos
此外,包含keyfile和certfile以防止由synthesizerpatel描述的攻擊的代碼是什麼?我從http://docs.python.org/3.2/library/smtplib.html看到它可以被包含但沒有例子。還有一個問題。如果我在終端窗口中手動輸入這些行中的每一行,那麼如果我通過諸如thunderbird之類的郵件客戶端發送電子郵件,OSI的哪一層就是應用層。 – Kryptos