include::../description.adoc[] include::../ask-yourself.adoc[] == Recommended Secure Coding Practices * Use an email library which sanitizes headers (Flask-Mail or django.core.mail). * Use html escape functions to sanitize every piece of data used to in the email body. * Verify application logic to make sure that email base feature can not be abuse to: ** Send arbitrary email for spamming or fishing ** Disclose sensitive email content == Sensitive Code Example smtplib ---- import smtplib def send(from_email, to_email, msg): server = smtplib.SMTP('localhost', 1025) server.sendmail(from_email, to_email, msg) # Sensitive ---- Django ---- from django.core.mail import send_mail def send(subject, msg, from_email, to_email): send_mail(subject, msg, from_email, [to_email]) # Sensitive ---- Flask-Mail ---- from flask import Flask from flask_mail import Mail, Message app = Flask(__name__) def send(subject, msg, from_email, to_email): mail = Mail(app) msg = Message(subject, [to_email], body, sender=from_email) mail.send(msg) # Sensitive{code} ---- include::../see.adoc[] ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) include::../message.adoc[] ''' == Comments And Links (visible only on this page) === on 28 Oct 2019, 07:42:43 Alexandre Gigleux wrote: LGTM include::../comments-and-links.adoc[] endif::env-github,rspecator-view[]