Eksperymentowałem z pocztowym skryptem python i zastanawiałem się, czy podczas pisania skryptu e-mail opartego na pythonie jest on mniej bezpieczny w przeciwieństwie do wysyłania poświadczeń przez Internet podczas logowania do strony internetowej? W poniższym skrypcie, jesteś użytkownikiem i przekazujesz jasne?Python smtplib security
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')
Jedną z rzeczy, na którą należy zwrócić uwagę - i nieco szarpnięcia - jeśli nie przekazujesz pary kluczy/certyfikatów do starttli, nie sądzę, aby to potwierdzało łańcuch podpisywania SSL, co oznacza, że ktoś mógłby umieścić fałszywy serwer SSL up i podaj swoje DNS i możesz połączyć się z nimi SSL i dać im swoje poświadczenia. Jest jednak mało prawdopodobne, że warto o tym wspomnieć, jako że szyja, wykonująca przegląd kodu, zrobi to za Ciebie. Domyślnie Python po prostu zainicjuje połączenie SSL z podpisanym lub nie podpisanym certyfikatem na zdalnym końcu. Wygodny podczas programowania, mniej niesamowity w produkcji. – synthesizerpatel
Aby wyjaśnić odpowiedź synthesizerpatel, chcę potwierdzić, że to, co opisuje, jest człowiekiem w środku ataku, a niekoniecznie atakiem, w którym dane uwierzytelniające zostały przechwycone z powyższego skryptu przez użytkownika, a login został wysłany w przejrzysty sposób (który byłby po prostu sprowadzić do wąchania pakietów). Czy to jest poprawne? – Kryptos
Co to jest kod zawierający plik klucza i plik certfile, aby zapobiec atakowi opisanemu przez synthesizerpatel? Widzę z http://docs.python.org/3.2/library/smtplib.html, że można go dołączyć, ale nie ma przykładów. I kolejne pytanie. Jeśli ręcznie wprowadziłem każdą z tych linii w oknie terminala, to jaka warstwa OSI jest tym, co w przeciwieństwie do warstwy aplikacji, jeśli wysyłam pocztę za pośrednictwem klienta pocztowego, takiego jak thunderbird. – Kryptos