像 Facebook 这样的网站在向您发送消息的主题行中包含用户的姓名。
因此,您会对用户在消息主题中输入的值进行什么转义?或者,除了 az、0-9、句点、逗号和单引号之外,您是否不允许使用任何其他内容?
如果有禁止字符,则需要转义。主题由 NL 终止,因此这是唯一不应该放在标题中的 (ASCII) 字符。
另见rfc821
联系表格也有同样的问题。
如果您查看电子邮件标题,您会得到以下信息:
Subject: user123 has sent you an invite
From: "User123" <user123@example.org>
您必须确保用户名与电子邮件标题的值不同。如果用户可以将自己命名为“收件人:spamreceiver1@example.org, spamreceiver2@example.org, spamreceiver3@example.org, spamreceiver4@example.org”,您必须清理输入。
搜索“联系表单垃圾邮件”应该会告诉您该怎么做。您至少应该删除所有出现的“收件人:”、“主题:”、“发件人:”等。
您需要小心电子邮件标题,8 位字符有点禁忌。(邮件服务器将拒绝它们)。
正确的方法是对您的主题行进行 MIME 编码并确保 ASCII 字符 \n 不在主题行中(技术上多行主题是可能的,但我想很多邮件客户端都会遇到问题)