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

PHP mail()函数的消息部分需要转义吗?

  •  1
  • Ricket  · 技术社区  · 14 年前

    我正在创建一个反馈网页。我只想获取一个用户输入的文本区域,然后用 mail

    mail("me@blah.com", "Feedback!", $_POST['feedback'], "From: myself@blah.com");
    /*    (to)           (subject)    (message)           (headers) */
    

    或者我需要逃离或者消毒 $_POST['feedback'] ?

    4 回复  |  直到 14 年前
        1
  •  2
  •   Dereleased    14 年前

    是的,你应该消毒它 一般做法 ,但这里不会出现太多错误,只需确保在指定的标题中:

    Content-Type: text/plain
    

        2
  •  1
  •   leepowers    14 年前

    正如stilstanding所说-您仍然需要清理任何用户提供的数据。

    我还建议使用类似PHPMailer的脚本来创建和发送电子邮件。这将确保安全地格式化消息,并使发送多部分html/文本消息等任务更加容易:

    http://sourceforge.net/projects/phpmailer/

        3
  •  0
  •   Halil Özgür    14 年前

    如果你不去检查 <script> 标签之类的东西,你不能逃避。但是你最好将你的邮件编码成引用的可打印的,为了可交付性而不是安全性,最好由一个好的邮件类/函数来完成,比如 Zend_Mail

        4
  •  0
  •   JW.    14 年前

    “消毒”是一个模糊的术语。有不同类型的编码用于不同的目的。

    如果你发送的是纯文本消息,我认为你不必担心它们的编码问题。PHP的mail函数应该处理所需的任何编码。

    如果您发送的是HTML消息,那么您确实需要对所有HTML属性和内容进行HTML编码,而不管这些值是否来自用户。