Применить 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;
Подумайте о теле письма таким образом: «Неизвестный адрес миссии неизвестен». Возможно, мы не знаем, какой клиент прочитает это сообщение, но мы можем предположить, что мы не хотим, чтобы в нем отображался живой, предоставленный пользователем, неэкранированный 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"));
?>
Основной элемент сообщения электронной почты - это обычный текст. Если вам нужен другой тип, например, HTML или многостраничное сообщение, вам необходимо использовать расширение MIME и указать тип соответствующим образом, используя Content-Type (например, text/html
для HTML или multipart/…
для multipart сообщение).
Таким образом, с точки зрения безопасности невозможно внедрить что-либо вредное (по крайней мере, не по спецификации). Даже символы, отличные от ASCII, должны обрабатываться правильно, несмотря на отсутствие объявления используемой кодировки символов.
Однако все еще могут быть некоторые недостатки в почтовых клиентах, которые могут быть использованы таким образом. Но я сомневаюсь в этом.
Хороший вопрос. Я не верю, что вам нужно избегать текста тела, но я знаю, что можно добавить заголовки к почте (например, BCC на тысячи адресов), если вы разрешите пользователю вводить адрес из адреса. Поэтому, если вы помещаете в нее переменные, определенно проверяйте новые строки (\n
и \r
), чтобы не добавлять дополнительные заголовки.
Он не защищен от атаки XSS, потому что если ваша почта содержит HTML, кто-то может ввести ее в почту.
Хорошее поведение - проверить и достоверные данные, которые вы ожидаете иметь. Если бы я был вами, я бы избежал этой строки. Это ничего не стоит, и вам не нужно беспокоиться о последствиях не использовать его.
text/html
. Но будьте осторожны с кодировкой и убедитесь, что двойное кодирование в порядке. В некоторых библиотеках проверки вы уже имеете кодированный ввод. – Trendfischer 4 May 2015 в 08:40