2012-09-07 2 views
0

Я новичок в stackoverflow и не могу найти ответ на мой вопрос, который есть; Как я могу защитить свой почтовый() код в php, чтобы люди не добавляли ОЦК, что бы ультимативно приводило к массовой рассылке? Мой сайт использует службу PHP mail() для отправки мне по электронной почте, когда на мой сайт был добавлен новый комментарий. Каков наилучший способ предотвратить вмешательство людей, например удаление ОЦК? То, что я до сих пор:php mail() удалить CC, BCC и безопасность

function mres($input){ 
if (get_magic_quotes_gpc()){ 
    $input = stripslashes($input); 
} 
return mysql_real_escape_string($input); 
} 
$name = strip_tags(mres($_POST['name'])); 
$comment = strip_tags(mres($_POST['comment'])); 

$to = '[email protected]'; 
$subject = 'Website - comment'; 
$body = 'A new comment has been entered on the website.'."\n\n"."$name".' said:   '."\n\n"."$comment"; 
mail($to,$subject,$body); 
+4

Как насчет того, чтобы не изобретать колесо и не использовать phpmailer? PS: для чего вы примените 'mysql_real_escape_string' для переменных? – zerkms

+0

Функция запрашивает сервер, если магические кавычки включены или отключены по умолчанию. Исходя из результатов, будут активированы соответствующие меры безопасности, что предотвратит инъекции sql или аналогичные при комментировании. – Medic

+0

Вам не нужно (и не следует) использовать 'mysql_real_escape_string', если вы не сразу используете результаты как часть SQL-запроса. (И 'mail()' не является SQL-запросом.) – duskwuff

ответ

0

Предполагая что этот код сопровождается:

mail($to, $subject, $body); 

Тогда это безопасно, если избыточна - единственные аргументы mail(), которые уязвимы для инъекций являются о nes, которые управляют полями заголовка ($to, $subject и $additional_headers). strip_tags и mysql_real_escape_string не нужны, и последний сделает апострофы в вашем письме \'.

Если нет следующего звонка на номер mail(), тогда он тривиально безопасен, потому что он ничего не делает. :)

+0

Моя следующая строка: mail ($ to, $ subject, $ body); что я случайно пропустил из вопроса, спасибо. – Medic

0

Я хотел бы посмотреть на что-то вроде http://mailgun.com/

Как это, ваша почта будет часто попадают в спам людей, если вы просто использовать почту()

+0

Он просто отправляет себе сообщение здесь! Для этого нет необходимости в почтовой службе. – duskwuff

+0

Ahh хороший звонок, я совершенно не замечал этого. – Tom

+0

В его нынешнем виде почта() просто отправляет вам сообщения по электронной почте, когда на моем сайте вводится новый комментарий. Из-за низкого объема трафика, возможно, 4-5 человек в неделю, я могу позволить себе это сделать. Это также позволяет мне проверить, подходит ли комментарий без входа на веб-сайт. – Medic

Смежные вопросы