当前位置: 首页 > 面试题库 >

正确防止PHP中的邮件注入

段成益
2023-03-14
问题内容

您能建议我如何在不丢失原始消息数据的情况下防止PHP中的电子邮件注入mail()吗?例如,如果我需要让用户使用\r\nToCC等,所以我不想完全剥夺他们从消息了-
我仍然希望他们供货,但没有增加任何额外的头或以某种方式使邮件注入的情况发生。

互联网上的大多数建议都建议完全删除该数据-但我不想这样做。

我正在通过PHP mail()函数发送纯文本(非HTML)消息。

您有什么建议?


问题答案:

要过滤有效的电子邮件以在收件人电子邮件字段中使用,请查看filter_var()

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

if ($email === FALSE) {
    echo 'Invalid email';
    exit(1);
}

这样可以确保您的用户仅提供有效的单一电子邮件,然后您可以将其传递给该mail()功能。据我所知,没有办法使用PHP
mail()函数通过消息主体插入标头,因此数据不需要任何特殊处理。

更新:

根据的文档mail(),当它直接与SMTP服务器通信时,您将需要阻止消息正文中的句号:

$body = str_replace("\n.", "\n..", $body);

更新#2:

显然,也可以通过主题进行注入,但是由于没有FILTER_VALIDATE_EMAIL_SUBJECT,您需要自己进行过滤:

$subject = str_ireplace(array("\r", "\n", '%0A', '%0D'), '', $_POST['subject']);


 类似资料:
  • 问题内容: 在GET和POST参数中不仅需要cookie,还需要身份验证。 检查HTTP Referer头; 在Wikipedia上看到了这篇文章,想知道如何应用它们 好的…我正在使用Kohana PHP框架,并且具有确定引荐来源标头的功能,但是究竟要检查引荐来源标头中的什么内容呢?框架函数仅返回引荐来源网址 以及如何验证GET和POST参数?反对什么?存储的信息?预期的类型? 问题答案: 为了防

  • 本文向大家介绍PHP中防止SQL注入方法详解,包括了PHP中防止SQL注入方法详解的使用技巧和注意事项,需要的朋友参考一下 问题描述:   如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子:   因为用户的输入可能是这样的:   那么SQL查询将变成如下:   应该采取哪些有效的方法来防止SQL注入?  最佳回答(来自Theo):

  • 本文向大家介绍PHP中怎样防止SQL注入分析,包括了PHP中怎样防止SQL注入分析的使用技巧和注意事项,需要的朋友参考一下 本文实例分析了PHP中怎样防止SQL注入。分享给大家供大家参考。具体分析如下: 一、问题描述:   如果用户输入的数据在未经处理的情况下插入到一条SQL查询语句,那么应用将很可能遭受到SQL注入攻击,正如下面的例子: 因为用户的输入可能是这样的: 那么SQL查询将变成如下:

  • 问题内容: 这个问题的答案是 社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 如果将用户输入未经修改地插入到SQL查询中,则应用程序容易受到SQL注入的攻击,如以下示例所示: 这是因为用户可以输入类似的内容,并且查询变为: 如何防止这种情况的发生? 问题答案: 使用准备好的语句和参数化查询。 这些是独立于任何参数发送到数据库服务器并由数据库服务器解析的SQL语句。这样,攻击者就

  • 问题内容: 这个问题已经在这里有了答案 : 如何防止PHP中进行SQL注入? (28个答案) 7年前关闭。 我已经建立了一个网站,该网站即将上线,并且有几个关于防止SQL注入的问题,我知道如何使用,但是我只是想知道是否必须在要获取的所有变量上使用它SQL语句,是否在执行select语句时还是在插入更新和删除时必须使用它?另外,在我将网站投入使用之前,您还建议我实施哪些其他安全措施,在此先感谢您的帮

  • 问题内容: 我有点困惑,PHP中有很多函数,有些使用这个,有些使用那个。有些人使用:,,等 哪个是正确的,你们通常使用什么? 这是正确的吗(如果有的话,建议我做一个更好的): 该行可以防止MySQL注入和XSS攻击? 顺便说一句,除了XSS攻击和MySQL注入之外,还有其他需要注意的事情吗? 编辑 结论: 如果我想将字符串插入数据库,则无需使用,只需使用即可。在显示数据时,请使用,这是您的全部意思