Нужно ли экранировать символы при отправке электронных писем?
Вопрос
Я использую контактную форму Django на веб-сайте, чтобы позволить посетителям отправлять электронные письма.
В настоящее время это экранирующие символы, поэтому одинарные и двойные кавычки преобразуются в & amp; # 39;
и & amp; quot;
соответственно. Письма были бы более читабельными, если бы кавычки отображались как '
и "
. Р>
Я понимаю, почему я никогда не должен размещать неэкранированные данные от посетителей на своих веб-страницах из-за риска xss. Есть ли такой же риск с электронными письмами, или это нормально, чтобы отправлять входные данные посетителя без экранирования?
Решение
Если это письма электронной почты в формате HTML, вы не возражаете против побега, так что я предполагаю, что это обычный текст? В этом случае вы хотите отключить цитирование. Вы можете обернуть тело вашего шаблона в
{% autoescape off %}
...
{% endautoescape %}
чтобы оставить своих персонажей в покое.
Другие советы
Я бы все еще зашифровал их, чтобы быть в безопасности. Поскольку большинство почтовых клиентов допускают изображения, ничто не мешает кому-то использовать в сообщении тег img
, чтобы сказать ... получить чей-либо IP-адрес.