代码之家  ›  专栏  ›  技术社区  ›  Bakaburg

php中的security and mail()函数

  •  6
  • Bakaburg  · 技术社区  · 14 年前

    我正在使用mail()发送简单的邮件。为了方便起见,我使用头来设置“发件人”地址。我想知道,我可以把任何一个地址放在那里,假装是任何人;我只是出于好奇心而对自己试着这样做,实际上是可行的!这是正常的吗?这是使用邮件功能的正确方法?有没有办法确认这些邮件的发送者的身份?

    编辑: 我用我的gmail地址在mail()的头中作为“发件人”发送了一封邮件给我自己。我收到了带有这些标题的消息:

    …
    
    Received: from smarty.dreamhost.com (smarty.dreamhost.com [208.113.175.8]) by mx.google.com with ESMTP id w21si2197938ybh.68.2010.10.19.19.33.30; Tue, 19 Oct 2010 19:33:30 -0700 (PDT)
    
    Received: from nationals.dreamhost.com (nationals.dreamhost.com [69.163.165.6]) by smarty.dreamhost.com (Postfix) with ESMTP id EB56D6E804A for <myMail@gmail.com>; Tue, 19 Oct 2010 19:33:29 -0700 (PDT)
    
    Received: by nationals.dreamhost.com (Postfix, from userid 3598506) id E4BB635C83F; Tue, 19 Oct 2010 19:33:29 -0700 (PDT)
    
    Return-Path: <mySite@nationals.dreamhost.com>
    
    Received-Spf: pass (google.com: domain of mySite@nationals.dreamhost.com designates 208.113.175.8 as permitted sender) client-ip=208.113.175.8;
    
    Authentication-Results: mx.google.com; spf=pass (google.com: domain of mySite@nationals.dreamhost.com designates 208.113.175.8 as permitted sender) smtp.mail=mySite@nationals.dreamhost.com     
    



    发生了什么事?我无法解释邮件头,但看起来谷歌接受了假地址!

    3 回复  |  直到 14 年前
        1
  •  1
  •   tobyodavies    14 年前

    是的,from header只是一个header,任何人都可以声称自己是使用电子邮件的任何人。但是,大多数邮件服务器会将发送服务器的IP地址与发件人电子邮件地址的DNS MX记录不匹配的任何内容视为垃圾邮件。

        2
  •  6
  •   tylerl    14 年前

    欢迎使用SMTP。

    通常情况下,你可以在你选择的电子邮件中输入任何发件人地址,就像你可以在你选择的物理信件中输入任何回复地址一样。

    为了扩展这个比喻,验证一封信是由一个给定的个人寄出的唯一方法是查看其他细节,比如邮戳;同样,关于谁寄出了一封邮件的唯一真正线索是邮件服务器添加的附加头,在这个过程中标识最后一个接触邮件的服务器。

    这个故事的寓意是:永远不要信任发件人地址;安全性从来不是电子邮件系统的一个预期功能。正如VintCerf最近对我们现有的互联网协议所说:“我们从来没有打算让这些东西出去。”

        3
  •  1
  •   Andy Groff    14 年前

    是的,这是可能的。如果您从无法解析为发送电子邮件的IP的域发送电子邮件,则更可能将服务器的IP列入黑名单,并将邮件标记为垃圾邮件。

    有一次我和一个愚人节的笑话玩得很开心…

    只是不要经常这样做,否则你会冒着被黑名单的风险。我不确定是否要追溯到过去,但我认为这应该是可行的。