1

在网站上,如果我有一个用户可以输入一些文本的表单,然后是一个显示用户输入内容的页面。我知道对用户输入的值进行 html 编码以防止脚本攻击。如果表单正在发送电子邮件地址,我想我也会这样做,但是电子邮件是否有任何特殊情况,电子邮件客户端会运行注入电子邮件中的任何脚本吗?

4

5 回答 5

1

虽然在发送之前从文档中去除标签仍然是一个好主意,<script>但我认为威胁很小。我相信您很难找到在呈现电子邮件之前不剥离脚本的电子邮件客户端(仍在获得支持)。

于 2008-09-22T13:16:07.410 回答
0

我相信通过将电子邮件正文标记为 text/plain 可以避免 javascript 和/或 html 攻击(但我不相信 Outlook 会遵循标题的建议)。

于 2008-09-22T10:28:45.613 回答
0

您应该使用一个 SMTP 库来承担由重复或丢失的转义引起的任何负担(和潜在的错误)。然后,仅使用纯文本邮件(文本/纯文本)。

为了避免错误邮件客户端的安全问题,您还可以发送几乎空的邮件,并将文本作为附件(文件扩展名“.txt”,内容类型“text/plain”)。

于 2008-09-22T10:57:37.027 回答
0

在将发布的内容分配给电子邮件的 HTML 正文之前,您绝对应该进行 HTML 编码。您的代码应该已经拒绝诸如“<script>”之类的无效内容,不仅在电子邮件的情况下,而且在所有情况下。

您无需担心其他问题。

于 2008-09-22T14:09:14.677 回答
0

我强烈建议使用现有的、经过测试的解决方案来发送邮件。例如,如果您将用户输入传递给 PHP mail() 函数——即使使用 HTML 编码——攻击者也有可能制作一个实际包含标题的“正文”来创建多部分消息。

于 2008-09-22T14:42:14.817 回答