【问题标题】:PHP Mail function used to send out unsolicited email via formsPHP Mail 函数用于通过表单发送未经请求的电子邮件
【发布时间】:2012-06-25 09:14:30
【问题描述】:

最近我们发现有人从我们的服务器发送了未经请求的电子邮件。这导致服务器被列入黑名单。我认为这是黑客使用未正确转义数据的表单,还是其他原因?

我们有许多网站都有自己的“联系我们”类型的表单。我正在检查所有表格并确保帖子数据被转义。我发现一个表单将 POST 数据添加到消息中而没有先验证它。我刚刚在发送电子邮件之前添加了一张支票。您认为以下内容是否足够,或者在通过 filter_var 运行电子邮件帖子值之前将其转义是否更好?

    if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
    {
        $message = $email." says hello";
        $headers = "From: me@example.com";
        mail('to@example.com', 'Subject', $message, $headers);          
    }

我是否应该检查传输日志中是否存在标头注入攻击/其他攻击,如果需要,我会寻找什么?

【问题讨论】:

  • 我不太明白你的问题,所以你有一个免费的表格,任何人都可以从任何发件人向任何收件人发送任何消息?或者您有“联系我们”表格?或者您担心有人可以访问您的服务器?
  • 您的 SMTP 服务器有可能是一个开放中继(如果有的话)。 Check
  • @AdnanShammout 很抱歉不清楚。不,我们没有免费表格,我们有许多网站都有自己的“联系我们”类型的表格。
  • @AlvinWong 感谢您的链接,它说邮件服务器不是开放中继
  • 其实我不认为一定是PHP导致了这个问题。您可以查看 [CBL](cbl.abuseat.org/lookup.cgi),如果您在此处列出,它会告诉您问题所在。

标签: email validation email-validation php


【解决方案1】:

您可以做的最好的事情是检查您的日志以查看谁在发送这些电子邮件,因为您可能不会检查所有用户的脚本。 此外,过滤/转义/编码您自己的表单输入(尽管您绝对应该这样做)没有任何意义,因为您的任何用户都可以使用您的 smtp 服务器。

以下是跟踪邮件日志的方法:

tail -f /var/mail/exim_mainlog
tail -f /var/log/exim_mainlog
tail -f /var/log/exim_paniclog
tail -f /var/log/exim_rejectlog

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-18
    • 2016-08-29
    • 2012-02-05
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    相关资源
    最近更新 更多