【问题标题】:php Form to Email sanitizingphp 表单到电子邮件清理
【发布时间】:2010-04-30 10:50:17
【问题描述】:

我使用以下内容发送联系我们类型的表格,iv 调查了安全性,只发现您需要保护邮件功能的 From: 位,因为我硬编码这意味着该脚本是防垃圾邮件的/un-可劫持

$tenantname = $_POST['tenan']; 
$tenancyaddress = $_POST['tenancy'];
$alternativename = $_POST['alternativ'];
//and a few more
//then striptags on each variable

$to = "hardcoded@email.com";
$subject = "hardcoded subject here";
$message = "$tenantname etc rest of posted data";
$from = "noreply@email.com";
$headers = "From: $from";

mail($to,$subject,$message,$headers);

【问题讨论】:

  • 我相信您的意思是您需要保护“收件人:邮件功能的位”,因为那是您实际硬编码的内容。

标签: php security email forms sanitization


【解决方案1】:

无法劫持?是的。

防垃圾邮件?我不会这样描述它,因为表单仍然可以用于向表单的目标发送垃圾邮件。

【讨论】:

    【解决方案2】:

    有一些注意事项$headers 绝对不能被攻击者控制。如果他们可以控制这个变量,那么他们可以注入 crlf \r\n 并将这个论坛变成一个开放的垃圾邮件网关。 PHP-Nuke 前段时间很容易受到这种影响。

    第二个考虑是速率限制。一个愚蠢的机器人会去这个论坛几千次。他们甚至可能不会发送垃圾邮件,而只是扫描您的网站以进行 sql 注入入侵。您应该使用 reCapthca 来防止机器人提交此论坛。

    【讨论】:

      【解决方案3】:

      如果您使用表单数据创建 $from(从您的代码中不太确定),$from 可用于添加额外的标题 (BCC/CC),有点像 SQL 注入。

      更新:现在代码可读性更高了,我意识到这对你来说应该不是问题。

      【讨论】:

      • 它叫crlf(\r\n)注入,和sql注入完全不同。
      • 我认为它是相似的,因为就像 SQL 注入一样,您可以结束当前的“语句”(在这种情况下是标题),并添加额外的“命令”(在这种情况下标头)。由于 SQL 注入(应该?)为 PHP 开发人员所熟知(比 crlf 注入更多),因此它似乎是解释它的好方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-16
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 2011-06-26
      相关资源
      最近更新 更多