这里有一个关于如可构造基本邮件消息和设置邮件接收者的示例。在这个示例中,我会用纯文本和html两种格式发送一个简单的备忘录给我的老友Life。
Note | |
---|---|
注意, |
<?php
$text = TEXT<<<
The quick brown fox jumps over the lazy dog.
Now is the time for all good men to come to the aid of their country.
TEXT;
$html = HTML<<<
<p>The quick brown fox jumps <em>over</em> the lazy dog.</p>
<p><strong>Now</strong> is the time for all good men
to come to the aid of their country.</p>
HTML;
$mail = Solar::factory('Solar_Mail_Message');
$mail->setCharset('utf-8')
->setFrom('pmjones@example.com', 'Paul M. Jones')
->addTo('boshag@example.com', 'Bolivar Shagnasty')
->addCc('nobody@example.net')
->setSubject('A Short Test Message')
->setText($text)
->setHtml($html);
?>
这很简单,不是吗?但是这种方法安全吗?
任何最终以头部发送的信息,包括收件人地址和邮件标题,都需要经过审查以防止邮件头注入攻击,我们通常是通过移除头部标签值中的新行来避免这种攻击的。我们假设你想添加自定义邮件头部:
<?php $mail = Solar::factory('Solar_Mail_Message'); $mail->setHeader('X-Custom-Header', "Foo\r\n\r\nAn evil message"); ?>
在一个较不安全的系统中,这将会发送下面的邮件头部:
X-Custom-Header: Foo An evil message.
这是很不合谐的 -- 有人把恶意消息(可能是广告、病毒)注入到我们的邮件中来了。
使用Solar_Mail_Message
,当发送邮件时,上面发出去的邮件头部如下:
X-Custom-Header: FooAn evil message
我们自动过滤了邮件头部标签值中的新行,所以使用Solar_Mail_Message
是可以避免头部注入攻击的。(如果有其他途径进行头部注入攻击,欢迎和我交流。)