gpt4 book ai didi

php - 如何保护发送电子邮件的表单

转载 作者:可可西里 更新时间:2023-11-01 00:02:48 24 4
gpt4 key购买 nike

我有以下发送电子邮件的代码。

这对于生产环境来说是否足够好/安全。即它会阻止机器人、使用它发送垃圾邮件的 curl 脚本,并阻止电子邮件注入(inject)等吗?

<?php

require_once('recaptchalib.php');
$privatekey = "private keys goes here";
$resp = recaptcha_check_answer ($privatekey,
$_SERVER["REMOTE_ADDR"],
$_POST["recaptcha_challenge_field"],
$_POST["recaptcha_response_field"]);

if (!$resp->is_valid) {

// What happens when the CAPTCHA was entered incorrectly
die ("The reCAPTCHA wasn't entered correctly. Go back and try it again. " .
"(reCAPTCHA said: " . $resp->error . ")");

} else {

require 'class.phpmailer.php';

//Create a new PHPMailer instance
$mail = new PHPMailer();

//Set who the message is to be sent from
$mail->SetFrom('oshirowanen@localhost.com');

//Set who the message is to be sent to
$mail->AddAddress($_POST['email']);

//Set the subject line
$mail->Subject = 'subject goes here';

//Replace the plain text body with one created manually
$mail->Body = $_POST['message'];

//Send the message, check for errors
if(!$mail->Send()) {

die ("Mailer Error: " . $mail->ErrorInfo);

} else {

echo "Message sent!";

}

}

?>

所以基本上,我要问的是,上面的代码是否足够安全、足够安全、足够好以用于生产环境?

最佳答案

我以前没有用过php mailer,但它应该注意安全、转义等。
但是,您的代码看起来不错:

  • 我会通过在发送前添加编码检查来改进脚本 - 例如:

    iconv("UTF-8", "UTF-8//IGNORE", $subject_or_message_or_any_string);
  • 如果邮件发送失败,我也不会显示信息,我宁愿使用类似的东西:

    if (!$mail->Send())
    {
    LogErrorMessage("Mailer Error: %s", $mail->ErrorInfo);
    die ("Sorry, mail could not be sent");
    }
  • 接下来我将发送或记录发送电子邮件表单的用户的 IP 地址 - 对于他喜欢发送垃圾邮件的情况,您可以轻松阻止他。

关于php - 如何保护发送电子邮件的表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18431250/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com