2008-09-22 49 views
1

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

回答

0

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

有没有其他的考虑,你需要担心。

0

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

0

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

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

1

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

0

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

相关问题