【问题标题】:Obfuscate email in PHP? [duplicate]在 PHP 中混淆电子邮件? [复制]
【发布时间】:2013-05-25 11:01:09
【问题描述】:

我正在尝试改进使用 PHP 通过电子邮件发送表单提交的方式。目前我的代码如下所示:

<?php
  //==== FORM DATA
  $name = $_REQUEST['cName'];
  $email = $_REQUEST['cEmail'];
  $message = $_REQUEST['cMessage'];

  //==== EMAIL DETAILS
  $to = "myemailaddress@test.com";
  $subject = "Web Query";
  $headers .= "From:".$email;
  $headers .= "MIME-Version: 1.0\r\n";
  $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

  //==== EMAIL CONTENT
  $content =
  "<b>From: </b>".$name."<br />".
  "<b>Email: </b>".$email."<br /><br />".
  "<b>Message: </b>".$message;

  //==== SEND EMAIL
  mail($to, $subject, $content, $headers);
?> 

我发现了一个潜在的缺陷。我输入了“收件人”电子邮件地址,我担心这可能会导致垃圾邮件(所有其他数据都来自 html 表单提交,除了直接进入 PHP 的“收件人”地址)。混淆该电子邮件地址的最简单方法是什么?是否有必要这样做?

【问题讨论】:

  • 混淆在这里是错误的词 - 你想逃避你的字符串。

标签: php forms email


【解决方案1】:

您的电子邮件地址是在您的 PHP 代码中设置的,因此它不会暴露给客户端浏览器。

但是,您在电子邮件标题中使用了未受保护的表单数据(正如 MMM 所指出的),这是更令人担忧的问题,应该在此代码生效之前解决。

【讨论】:

  • -1 - 他不安全!他正在使用$_REQUEST 并将其直接嵌入到标题中!这允许标头注入。
  • 使用 no-reply@... 从来都不是一个好的选择,也不友好
  • @Cube32:你说他的代码是安全的,这是错误的,不管你是否试图回答他的问题。
  • @MMM 我试图通过改变答案来反映你的 cmets
  • @Cube32 感谢您的帮助。所以我猜我需要保护的唯一领域是“来自电子邮件”?最好的方法是什么?
【解决方案2】:

您应该在使用 $_REQUEST 变量之前对其进行转义,例如使用 mysql_real_escape_string 并且您应该检查它们是否具有正确的值类型并使用自定义函数(有效的电子邮件?)验证它们,使用 filter_var 就像我的常识提到的: https://stackoverflow.com/a/16748986/753676

【讨论】:

  • 定义“转义”?否则这个答案根本没有帮助
  • 谢谢,我会调查的。 PHP 让我头疼。我对PHP和mysql的了解实在是太少了。
  • mysql_real_escape_string?谁赞成这个答案,我想看看原因
  • 使用 mysql_real_escape 或其他解决方案进行转义并使用验证函数
【解决方案3】:
$name = htmlspecialchars($_REQUEST['cName']);
$email = filter_var($_REQUEST['cEmail'], FILTER_VALIDATE_EMAIL);
$message = htmlspecialchars($_REQUEST['cMessage']);

【讨论】:

  • 应该使用这个,谢谢 =) 几乎忘记了这些小“帮手”,因为我主要使用自动完成所有这些验证任务的框架(比重新发明轮子而不使用像 ZF 这样的框架更好) :D
  • 我尝试使用 htmlspecialchars 但它只是中断了进程并且不再发送电子邮件......
  • 这之后$message的结果/内容是什么?
【解决方案4】:

如果您希望避免邮件不被视为垃圾邮件,您应该尝试使用 smtp 身份验证发送邮件。为此,您可以使用phpmailer

【讨论】:

  • 这并不能解决垃圾邮件过滤器的问题,有许多因素可能会提醒垃圾邮件过滤器(如内容、图片网址、主题行等等)
  • @DanielRuf Ruf..到目前为止,如果一切正常,那么 smtp 身份验证将起作用,您将在收件箱中收到您的邮件。但是如果您的内容可疑并且您的邮件服务器中有复杂的垃圾邮件保护即使您从受信任的邮件发送,您也不会在收件箱中收到邮件。我使用到目前为止没有发现问题..
  • 那么你很幸运,一些邮件客户端和服务器不喜欢它,如果你使用图像 url,你有时需要附加并包含图像以避免客户端将其标记为垃圾邮件或阻止图片
  • @DanielRuf 我不知道到目前为止我在 100 个网站上使用过是否有运气 :) ..
  • 如果您不使用带有附件的 html 电子邮件 ;-)
猜你喜欢
  • 2013-01-07
  • 2013-05-25
  • 2013-11-05
  • 1970-01-01
  • 1970-01-01
  • 2012-08-07
  • 2013-04-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多