发送电子邮件时是否需要转义POST?

oshirowanen

我有以下代码:

<?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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在发送电子邮件之前更改文件时是否需要删除/添加附件?

发送电子邮件时django线程是否被阻止?

选中复选框时需要发送电子邮件(动态电子邮件地址)(真)

如果我使用delivery_later方法,是否需要通过ActiveJob发送电子邮件?

通过 aws 发送电子邮件是否只需要 AccessKey 和 SecretKey?

当我尝试发送电子邮件时,SMTP服务器需要安全的连接

Angular Webapp 发送电子邮件需要什么?

需要向多个用户发送电子邮件

Jenkins无法发送电子邮件-需要验证

发送电子邮件之前需要预览页面

使用 smtp 发送电子邮件(需要帮助)

注册用户时发送电子邮件时出错

Google PubSub / Gmail Webhook:发送电子邮件时始终从PubSub接收多个POST请求

子域在发送电子邮件时是否保护域的声誉?

使用 Sidekiq 发送电子邮件时是否可以不使用 Redis?

如何使用jQuery和POST发送电子邮件

使用Django从表单POST数据发送电子邮件

发送电子邮件时隐藏“发送至电子邮件”地址

是否可以使用python发送电子邮件?

是否可以确定从何处发送电子邮件?

亚马逊简单电子邮件服务-需要发送电子邮件

Laravel 5:发送电子邮件时出错

从控制器发送电子邮件时延迟

从Google App脚本发送电子邮件时出错

当 HikariCP 警告泄漏时发送电子邮件

生成文件时自动发送电子邮件

发送电子邮件时未触发MessageSending事件

尝试在Laravel中发送电子邮件时出错

Laravel:在注册时发送电子邮件