编码电子邮件的用户输入

时间:2020-03-06 14:31:58  来源:igfitidea点击:

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

解决方案

我相信,通过将电子邮件正文标记为文本/纯文本可以避免javascript和/或者html攻击(但我不相信Outlook会遵循标题提示)。

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

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

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

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

我们无需担心其他任何注意事项。

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