2012-03-07 124 views
2

我想使用PHP腳本從網站上的HTML文件發送電子郵件。 這個PHP腳本是否足以抵禦黑客攻擊和垃圾郵件?安全的PHP電子郵件腳本

<?php 

$to = "[email protected]"; 
$subject = "Sent from site"; 

$email = $_POST['emailFrom']; 
$message = $_POST['message']; 

$email = filter_var($email , FILTER_SANITIZE_EMAIL); 
$message = filter_var($message , FILTER_SANITIZE_EMAIL); 

$message = $email . $message; 

mail($to, $subject, $message, "From: [email protected]"); 
?> 
+1

看起來不錯。只要檢查到任何可以發佈的內容,就可以保證安全。 – Olaf 2012-03-07 17:30:06

+1

可能更適合http://codereview.stackexchange.com/。 – j08691 2012-03-07 17:30:50

+2

只要您的腳本不允許某人指定他們自己的收件人地址,它就不會對垃圾郵件製造者有用。 – ghoti 2012-03-07 17:31:36

回答

1

FILTER_SANITIZE_EMAIL從字符串中刪除非法的電子郵件地址字符;因此這不是電子郵件內容的最佳選擇(但對電子郵件地址可能有用)。雖然刪除HTML特殊字符在防止XSS攻擊時很有用,但值得注意的是,有合法的理由在郵件中發佈<和>(即現在)。因此,最好將這些字符轉換爲它們的html實體。

即,
<會變成& lt;
和>會變成& gt;

所以爲了改變HTML字符的實體替換:
$message = filter_var($message , FILTER_SANITIZE_EMAIL);
$message = htmlspecialchars($message);
除此之外,它看起來不錯;但請記住,在涉及數據庫的情況下,還應該添加數據庫防範措施。