我有以下代码:
<?php
$email_from = "[email protected]";
$email_to = $_POST["referred_email"];
$email_subject = 'test subject here';
$email_message = $_POST["referred_message"];
// create email headers
$headers = 'From: '. $email_from ."\r\n".
'Reply-To: '. $email_from ."\r\n" .
'X-Mailer: PHP/' . phpversion();
if (filter_var($email_to, FILTER_VALIDATE_EMAIL)) {
$result = mail($email_to, $email_subject, $email_message, $headers);
echo 'Mail accepted for delivery ';
} else {
echo 'Mail could not be sent ';
}
?>
是否应该以任何方式转义任何POST值以防止用户进行恶意操作?如果是,应使用哪种转义方法?魔术引号?
我正在使用PHP5.x。
代码中的所有输出都应以适当的方式进行转义或清除。这包括作为电子邮件发送的输出。
在编写电子邮件标题时,您需要非常警惕,以保护自己免受可能导致邮件发送到任意地址和任意内容的注入攻击的侵害。
最终,这取决于确保您的电子邮件地址有效且不包含任何换行符等,并且您的当前FILTER_VALIDATE_EMAIL
代码是处理此问题的良好起点。
无论如何,您的程序基本上允许用户将他们喜欢的任何内容发送给他们喜欢的任何收件人。他们唯一的硬编码部分是您的“发件人”地址。这听起来像是一个公开邀请,可用来发送垃圾邮件,而不管您可能在进行何种逃避。
如果这是您的实际代码,我建议您重新考虑它的作用!
完成此操作后,我建议您下载phpMailer类的副本,并将其用于以PHP而非内置mail()
功能发送电子邮件。它易于使用,功能更多,最重要的是,它可以为您完成所有验证,卫生处理和转义操作,因此您无需再为它担心。
希望能有所帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句