2012-09-07 199 views
0

我是新来的stackoverflow并找不到答案是我的问题是;如何在php中保护我的mail()代码以防止人们添加最终会导致群发邮件的密件抄送?我的网站使用PHP邮件()服务在我的网站中输入新评论时向我发送电子邮件。防止人们篡改它的最好方法是什么,例如删除密件抄送?我至今是: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

除非立即使用结果作为SQL查询的一部分,否则不需要(也不应该)使用mysql_real_escape_string。 (而'mail()'不是SQL查询。) – duskwuff

回答

0

假设此代码后跟:

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

然后,它是安全的,如果矫枉过正 - 唯一的参数mail()其易受注射是邻控制标题字段($to$subject$additional_headers)。 strip_tagsmysql_real_escape_string都是不必要的,后者会在您的电子邮件中使撇号显示为\'

如果没有以下电话mail(),那么它是平凡的安全,因为它什么都不做。 :)

+0

我的下面这行是:mail($ to,$ subject,$ body);我意外地忽略了这个问题,谢谢。 – Medic

0

我想看看像http://mailgun.com/

正因为如此,你的邮件通常会最终在人们的垃圾邮件,如果你只是使用电子邮件()

+0

他只是给自己发一条消息在这里!没有必要为此提供邮件服务。 – duskwuff

+0

啊,好的电话,我完全忽略了。 – Tom

+0

现在,当我的网站上输入新的评论时,邮件()只是给自己发送电子邮件。由于每周可能有4-5人的车流量很低,我可以负担得起。它还允许我在不登录网站的情况下检查评论是否合适。 – Medic