gpt4 book ai didi

php - 在 PHP 中防止电子邮件注入(inject)攻击的当前最佳实践是什么?

转载 作者:搜寻专家 更新时间:2023-10-31 21:19:13 24 4
gpt4 key购买 nike

当今从 PHP 电子邮件表单中清理数据的最佳实践是什么?

我目前正在使用类似这样的东西......

$msg = $_POST['msg'];
$email = filter_var($_POST['email'], FILTER_VALIDATE_EMAIL);
$name = $_POST['name'];

$subject = "Message from the MY_WEBSITE website e-mail system";
$message = "From: " . $name . "\n";
$message .= "Email: " . $email . "\n\n";
$message .= $msg;
$headers = "From: " . $email . "\r\n" .
"Reply-To: " . $email . "\r\n" .
"X-Mailer: PHP/" . phpversion();

$mailSuccess = mail("me@example.com", $subject, $message, $headers);

以这种方式简单地过滤电子邮件字段是否足以提供保护?我可以/应该更有效地强化脚本以防止垃圾邮件发送者吗?

提前致谢!

[编辑]澄清,因为到目前为止的答案表明我没有很好地解释自己。

我主要关心的不是垃圾邮件机器人获取此脚本,而是任何人利用它向除 me@example.com 以外的任何地址发送非法电子邮件。这可能包括一个机器人,但同样可能是一个人打败了验证码测试。

我正在寻找的是 PHP,它将确保 mail() 方法发送的电子邮件不被劫持。这可能是一个正则表达式或过滤器或类似的东西,只是去除某些字符。再次感谢。[/编辑]

最佳答案

我会这样做:

  • 使用验证码;
  • 如果主题或正文包含任何 HTML 标记,则发送失败。注意:我没有说把它们去掉。只是不要发送电子邮件并向用户提供错误消息。向自己发送经过过滤的垃圾邮件毫无意义。只是不要发送它;
  • 去除任何高位或低位字符(filter_vars() 可以做到这一点);
  • 将消息限制为 4000 个字符(或您选择的其他适当限制);
  • 如果消息包含任何不指向当前站点的 URL,则失败;
  • 可以说使用了 How do you stop scripters from slamming your website hundreds of times a second? 中的一些技术以确保有人发送消息。

关于php - 在 PHP 中防止电子邮件注入(inject)攻击的当前最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/823914/

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