Необходимо ли экранировать (сообщение) функции PHP mail ()? [Дубликат]

Применить position: relative к родительскому div.

  & lt; html & gt;  & Л; тело & GT;  & lt; div style = "padding-left: 50px;" & gt;  & lt; div style = "height: 100px" & gt;  Некоторое содержимое & lt; div & gt;  & lt; div style = "height: 80px; padding-left: 20px; position: relative;" & gt;  & lt; div id = "absPos" style = "padding: 10px; position: absolute; left: 0px; top: 0px; background-color: red;" & gt; & lt; / div & gt;  Некоторый текст & lt; / div & gt;  & Lt; / дел & GT;  & Lt; / тело & GT;  & Lt; / HTML & GT;   
11
задан Trendfischer 26 April 2013 в 12:30
поделиться

4 ответа

Подумайте о теле письма таким образом: «Неизвестный адрес миссии неизвестен». Возможно, мы не знаем, какой клиент прочитает это сообщение, но мы можем предположить, что мы не хотим, чтобы в нем отображался живой, предоставленный пользователем, неэкранированный HTML. Поскольку многие клиенты читают почту в HTML, лучше всего будет htmlentities() предоставить пользователю тело электронной почты.

Метод из моего класса escaper.

<?php
class escaper
{
    public function superHtmlEntities($string)
    {
        return htmlentities($string, ENT_QUOTES | ENT_HTML5, 'UTF-8', true);
    }
}
?>

=======================================

Как минимум , рассмотрите что-то подобное и многое другое, как вы делаете свое исследование.

<?php
$esc = new Escaper();

$usercontent = $_GET['usercontent'];
mail("dummy@nowhere.tld", "My Subject", $esc->superHtmlEntities("My body with $usercontent included"));
?>
0
ответ дан Anthony Rutledge 16 August 2018 в 10:04
поделиться
  • 1
    Исключение HTML должно быть минимальным. Согласовано. По крайней мере, в типе контента text/html. Но будьте осторожны с кодировкой и убедитесь, что двойное кодирование в порядке. В некоторых библиотеках проверки вы уже имеете кодированный ввод. – Trendfischer 4 May 2015 в 08:40

Основной элемент сообщения электронной почты - это обычный текст. Если вам нужен другой тип, например, HTML или многостраничное сообщение, вам необходимо использовать расширение MIME и указать тип соответствующим образом, используя Content-Type (например, text/html для HTML или multipart/… для multipart сообщение).

Таким образом, с точки зрения безопасности невозможно внедрить что-либо вредное (по крайней мере, не по спецификации). Даже символы, отличные от ASCII, должны обрабатываться правильно, несмотря на отсутствие объявления используемой кодировки символов.

Однако все еще могут быть некоторые недостатки в почтовых клиентах, которые могут быть использованы таким образом. Но я сомневаюсь в этом.

4
ответ дан Gumbo 16 August 2018 в 10:04
поделиться
  • 1
    Имхо, это лучший ответ. Content-Type text / html должен быть ясным, multipart / ... может быть опасным. Хотя, мое сомнение еще не удовлетворено. Что имеется с одним "." в строке, такой как «\r\n.\r\n»? Это может быть опасно? – Trendfischer 26 April 2013 в 12:01

Хороший вопрос. Я не верю, что вам нужно избегать текста тела, но я знаю, что можно добавить заголовки к почте (например, BCC на тысячи адресов), если вы разрешите пользователю вводить адрес из адреса. Поэтому, если вы помещаете в нее переменные, определенно проверяйте новые строки (\n и \r), чтобы не добавлять дополнительные заголовки.

0
ответ дан Rijk 16 August 2018 в 10:04
поделиться
  • 1
    Я думал об ускорении перевода строки, но переменные не находятся в начале тела. Как добавить к нему дополнительные заголовки. Моя забота больше в понимании проблемы, но спасибо за ответ. – Trendfischer 17 April 2013 в 13:25
  • 2
    Поэтому я думаю, что ты в порядке, не убегая лично. – Rijk 17 April 2013 в 14:09

Он не защищен от атаки XSS, потому что если ваша почта содержит HTML, кто-то может ввести ее в почту.

Хорошее поведение - проверить и достоверные данные, которые вы ожидаете иметь. Если бы я был вами, я бы избежал этой строки. Это ничего не стоит, и вам не нужно беспокоиться о последствиях не использовать его.

0
ответ дан Robert 16 August 2018 в 10:04
поделиться
  • 1
    Да, это был бы ответ, который я бы дал себе ;-) Но какой тип побега был бы уместным? – Trendfischer 17 April 2013 в 13:23
  • 2
    Выполнение чего-либо "на всякий случай" или потому что «он не может нанести вреда». это не инженер, но это догадывается. Я предпочитаю знать, что на самом деле нужно делать, и почему. – Nicolas 20 July 2018 в 23:12
Другие вопросы по тегам:

Похожие вопросы: