2012-03-07 125 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);
除此之外,它看起来不错;但请记住,在涉及数据库的情况下,还应该添加数据库防范措施。