1.1 引言
主要威胁:
Ø 暴力攻击(brute-force attack):这些攻击通过尝试所有可能的字符组合,以发现用户证书。首先尝试使用字典单词、常用密码或可预测的字符组合,优化暴力攻击。
Ø 账户劫持(account hijacking):这种威胁包括接管合法用户的账户,有时甚至会拒绝合法用户访问自己的账户。
Ø 社会工程(social engineering):这是使用软技巧(而不是软件和硬件技术获得敏感信息(例如:密码)的过程,这些信息可用于影响系统的安全性。
Ø 垃圾邮件(spamming):我们都很熟悉这种威胁。它是将大量无用电子邮件发送给用户或Web站点,从而堵塞因特网,有时甚至会引起服务器崩溃。
1.2 建立用户证书
1.2.1 实施强密码
小结:使用技术性方法和策略来确保强用户密码。
威胁:暴力攻击、账户劫持
可靠密码策略:
Ø 实施最小长度为8位字符的密码
Ø 不限制密码的最大长度
Ø 需要多种字符集,包括小写字母、大写字母、数字和标点符号
Ø 允许用户在他们的密码中使用任意键盘字符,包括空格
Ø 不允许字典单词
Ø 不允许密码中出现用户名
攻击工具:
http://neworder.box.sk/codebox.links.php?key=wwwcrks
http://www.securityfocus.com/tools/1127 -- Elaz
字典:
http://www.gattinger.org/wordlists/download.html
http://neworder.box.sk/codebox.links.php?key=passdict
1.2.2 避免使用易于猜测的证书
小结:易于猜测的用户名和密码将使用账户容易受到攻击
威胁:暴力攻击、账户猜测、账号劫持
安全策略:
Ø 不允许客服人员为客户选择密码
Ø 如果随机生成密码,则该密码不要遵循可预测的模式或基于用户名
Ø 绝对不要在任何系统上使用默认密码
Ø 不要使用可预测的或连续的用户账户名
Ø 不要为管理账户使用明显的名称
Ø 禁止使用听起来“官方化”的名字(如:administrator,support,root,postmaster,abuse,webmaster,security等)
1.2.3 防止证书获取
小结:证书获取将用户暴露在各种攻击之下
威胁:暴力攻击、社会工程、垃圾邮件
安全策略:
Ø 绝对不要使用电子邮件地址作为用户名,并且避免在其他地方显示用户的电子邮件地址
Ø 避免使用公有的用户目录和白页
Ø 允许用户在需要时改变他们的用户名
Ø 允许用户将一个或多个公有别名赋给他们的账户
Ø 允许探测暴力攻击或获取攻击
1.2.4 限制空闲的账户
小结:空闲的账户更容易成为电脑黑客的目标
威胁:账户劫持
安全策略:
Ø 若账户长时间空闲,应该对其进行控制,这需要一个类似于密码检索过程的重新激活过程
Ø 避免将任何表明某个账户是空闲的信息提供给其他人
Ø 在改变任何账户信息,或者执行重要事务后,通过电子邮件、信件或其他方式通知用户,以防该动作不是同用户本人完成的
Ø 使用反欺骗技术,例如:监控殿堂的账户活动
Ø 不要自动地为使用离线账户的客户激活在线账户访问
1.3 管理密码
1.3.1 存储密码
小结:对于应用程序和其他人来说,存储在数据库中的密码是一种危险
威胁:账户劫持、潜在的可能性
安全策略:
Ø 绝对不要在普通文本中存储密码,也不要使用可逆加密方法
Ø 使用强哈希算法,例如MD5、SHA-1,SHA256或SHA512
1.3.2 密码时效和历史记录
小结:旧密码或重用的密码将给攻击者提供更多的机会
威胁:暴力攻击、账户劫持
安全策略:
Ø 设置适合于应用程序和用户的最长密码时效
Ø 保持最近密码列表,以防止密码重用
Ø 如果可能,实施密码重新设置之间的最短时间间隔
1.3.3 改变密码
小结:简化并鼓励用户定期改变密码
威胁:暴力攻击、账户劫持
安全策略:
Ø 总是允许用户自己改变密码
Ø 用户可以直观并简单地改变密码
Ø 提醒或强迫用户定期改变密码
Ø 需要知道原有的密码才能改变新密码
Ø 需要用户输入两次新密码,以确保准确性
Ø 通过电子邮件或其他通信方式确认账户改变
Ø 改变密码后,终止所有活动的会话,并且要求验证
1.4 重新设置丢失或被贵忘的密码
1.4.1 重新设置密码
小结:按照精心计划的过程重新设置被丢失或遗忘的密码
威胁:暴力攻击、账户劫持
安全策略:
Ø 将重新设置密码作为安全事件对待,记录客户端的IP地址,并且采取其他实际的安全措施
Ø 绝对不要找回用户的密码;只允许用户设置新密码
Ø 绝对不要使用密码提示来提醒用户实际密码
Ø 通过回答安全问题或提供与账户相关的信息,请求用户表明对该账户的了解程序。绝对不允许匿名重新设置密码
Ø 发送给用户一封电子邮件,确认重新设置密码,提供一个安全链接以完成该过程
Ø 如果可行的话,清除任何使用账户存储的敏感信息,例如:信用卡号
Ø 在重新设置密码后终止所有现有的会话
1.4.2 通过电子邮件发送信息
小结:电子邮件是不安全的,不应该使用它传送敏感信息
威胁:敏感信息泄漏、账户劫持、用户隐私
安全策略:
Ø 绝对不要通过电子邮件发送敏感信息,例如:用户证书或信用卡信息
Ø 绝对不要只依赖电子邮件来验证用户的身份
Ø 不要使用电子邮件来保存包含敏感信息的Web表单提交结果
Ø 如果可能的话,数字化签名或加密电子邮件通信
1.4.3 分配临时密码
小结:除非强迫执行,否则用户不会改变临时密码
威胁:账户劫持、密码猜测
安全策略:
Ø 避免允许客服代表设置临时密码
Ø 如果必须使用临时密码,则使用强随机密码生成器
Ø 如果必须使用临时密码,则提供很短的过期日期,或者将密码设置为已经过期
1.4.4 使用秘密问题
小结:秘密问题并不是密码的代替品
威胁:敏感信息泄漏、账户劫持、用户隐私
比较好的秘密问题示例:
a) 第一个男朋友或女朋友的姓名是什么?
b) 在童年时代,印象最深的电话号码是哪一个?
c) 在孩童年代,最喜欢去的地方是哪儿?
d) 喜爱的演员、音乐家和艺术家分别是谁?
安全策略:
Ø 秘密问题自身并不安全,绝对不应该等同于密码进行使用
Ø 允许用户在需要的时候改变秘密问题和答案
Ø 检测对秘密问题的暴力攻击
1.5 授权用户
1.5.1教育用户
小结:用户必须知道如何保护他们的账户
威胁:账户劫持、社会工程、身份窃取
安全策略:
Ø 通过各种媒体,教育用户使用Web应用程序时所涉及的各种安全风险
Ø 如果可能的话,给用户提供一个论坛来讨论安全问题
Ø 绝对不要发送给用户的电子邮件中提供链接或表单,要求他们登录到账户
1.5.2 让用户置身其中
小结:让用户参与安全性防护将提高用户对安全性的理解,并且有助于限制各种攻击
威胁:账户劫持、社会工程
安全策略:
Ø 允许用户访问安全事务和事件的历史记录
Ø 提供给用户一种清楚并简单的方法来报告安全事故,并且要求他们报告任何可疑事件
Ø 如果可能的话,给用户提供一个论坛来讨论安全问题和事故
Ø 允许需要使用高级安全安全选项的用户访问这些选项
Ø 给用户提供一种方法来废除他们不再希望使用的账户