【发布时间】:2010-09-11 23:09:23
【问题描述】:
在一个网站上,如果我有一个用户可以输入一些文本的表单,然后是一个显示用户输入内容的页面。我知道对用户输入的值进行 html 编码以防止脚本攻击。如果表单正在发送电子邮件地址,我想我也会这样做,但是电子邮件是否有任何特殊情况,电子邮件客户端会运行注入电子邮件中的任何脚本吗?
【问题讨论】:
标签: javascript email
在一个网站上,如果我有一个用户可以输入一些文本的表单,然后是一个显示用户输入内容的页面。我知道对用户输入的值进行 html 编码以防止脚本攻击。如果表单正在发送电子邮件地址,我想我也会这样做,但是电子邮件是否有任何特殊情况,电子邮件客户端会运行注入电子邮件中的任何脚本吗?
【问题讨论】:
标签: javascript email
虽然在发送文档之前从文档中去除 <script> 标记仍然是个好主意,但我认为威胁很小。我相信您会很难找到在呈现电子邮件之前不剥离脚本的电子邮件客户端(仍在获得支持)。
【讨论】:
在将发布的内容分配给电子邮件的 HTML 正文之前,您绝对应该进行 HTML 编码。您的代码应该已经拒绝了诸如“
您无需担心其他注意事项。
【讨论】:
我相信通过将电子邮件正文标记为 text/plain 可以避免 javascript 和/或 html 攻击(但我不相信 Outlook 会遵循标题的建议)。
【讨论】:
您应该使用 SMTP 库来承担由重复或丢失转义引起的任何负担(和潜在错误)。然后,仅使用纯文本邮件(文本/纯文本)。
为了避免错误邮件客户端的安全问题,您还可以发送几乎空的邮件,并将文本作为附件(文件扩展名“.txt”,内容类型“text/plain”)。
【讨论】:
我强烈建议使用现有的、经过测试的解决方案来发送邮件。例如,如果您将用户输入传递给 PHP mail() 函数——即使使用 HTML 编码——攻击者也有可能制作一个实际包含标题的“正文”来创建多部分消息。
【讨论】: