В Python / Django, какие шаги необходимы для санации / экранирования символов введенных пользователем электронных писем? - PullRequest
0 голосов
/ 04 июля 2018

У меня есть проект Django с формой для отправки электронной почты пользователями. Пока все отлично работает.

Но я хочу быть уверен, что пользователи не могут (случайно) вставить вредоносный текст. Я использую интегрированную систему электронной почты django. (django.core.mail.EmailMessage)

Пользователи могут:

  • Установить тему и основной текст
  • Выберите некоторых получателей из базы данных

получатели из базы данных построены так:

recipients_list = ['{} <{}>'.format(r[0], r[1]) for r in recipients]

Я обеспокоен тем, что имена в базе данных содержат некоторые плохие символы, такие как запятые, и вызывают некоторые проблемы. Также я не знаю, есть ли что-то, о чем стоит помнить. В документации Django говорится, что внедрение заголовка будет предотвращено. Но это все, что мне нужно беспокоиться?

Ответы [ 2 ]

0 голосов
/ 16 июля 2018

Я не знал, что в python встроено то, что я искал:

https://docs.python.org/3/library/email.util.html#email.utils.formataddr

0 голосов
/ 04 июля 2018

Вы можете использовать встроенный валидатор электронной почты, например:

from django.core.validators import validate_email
from django import forms

...
recipients_list = []
for email, name in recipients:
    try:
        validate_email(email)
        # so email is valid:
        recipients_list.append(email)
    except forms.ValidationError:
        pass
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...