2012-09-07 111 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