1.4.2 通过电子邮件发送信息
小结:电子邮件是不安全的,不应该使用它传送敏感信息
威胁:敏感信息泄漏、账户劫持、用户隐私
请看如下的电子邮件,这是我在订阅一个基于Web的信息服务后,最近收到的电子邮件:


这种电子邮件的问题在于:
n 它通过因特网以普通文本的方式传递我的用户名和密码。
n 它通过因特网以普通文本的方式传递我的信用卡号。
n 可以使用orders@example.net邮箱的人将接收这些敏感信息的副本。
n 它指示我保存电子邮件以备查,如果某个人已经访问了我的电子邮件客户端,则可能会暴露敏感信息。
n 它告诉我,他们可能以普通文本的方式或使用可逆加密方法存储我的密码,还可能包括信用卡信息,而不是使用安全的单向哈希方式。
就其本质而言,电子邮件是一种不安全的媒介。它无法保证发送方或接收方的真实性;当电子邮件在传递路径上的不同网络中传输时,电子邮件传送没有加密,许多电子邮件服务器和客户端并不加密存储的消息,并且没有方法防止其他人接收退回的、隔离的或被拒绝的电子邮件副本。电子邮件也经常受到如下的攻击:跨站点的脚本、利用客户端弱点、脚本攻击、恶意附件和社会工程攻击。
电子邮件的另一个潜在风险是,用户无法保证总是使用相同的电子邮件地址或域。一些公司自动将过去雇员的电子邮件地址转发给该职位上新的雇员。新的域拥有者注册已过期的域也存在问题,假定新的域拥有者访问发送给整个域的所有电子邮件(请查看www.auctionbytes.com/cab/abn/y03/m05/i15/s01)。
设计系统时,使其只将电子邮件作为身份验证和通知的辅助形式。如果可能的话,利用S/MIME或PGP签名和加密方法,增强电子邮件的通信安全。允许用户提供一个用于所有电子邮件通信的公钥。
如果希望用户确认订单或账户注册,则可以提供一个安全的、临时的链接,用户可以通过该链接查看Web站点上的这些信息。不将他们的用户名和密码发送给用户,而是指示他们在注册过程中记住这些信息。如果必须提供信用卡订单的确认,则只需要提供卡号的最后几位数字,并且不需要提供其他任何标志信息。
在编写电子邮件时,总是考虑其他人拦截或浏览电子邮件中信息后对用户带来的影响。
我尚未见过Web站点实现的一个功能是,利用公钥加密技术(如PGP)来签名或加密电子邮件。可以很简单地允许用户粘贴(甚至是永久地存储)公钥,用于所有的电子邮件通信。还应该为组织提供公钥,并且签名所有将发出的电子邮件。如果需要查看免费PGP工具和开发库的列表,可以访问www.pgpi.org。
安全策略
n 绝对不要通过电子邮件发送敏感信息,例如,用户证书或信用卡信息。
n 绝对不要只依赖电子邮件来验证用户的身份。
n 不要使用电子邮件来保存包含敏感信息的Web表单提交结果。
n 如果可能的话,数字化签名或加密电子邮件通信。







