Web 开发的身份和数据安全_1.导论

参考:《Web 开发的身份和数据安全》

主要内容:

  • 了解 Web 和应用安全的现状。
  • 构建安全的加密方式、以及与各种密码攻击媒介斗争。
  • 创建数字指纹,在浏览器、设备和配对设备中识别用户。
  • 通过 OAuth 和 OpenID Connect 构建安全的数据传输系统。
  • 使用其他的识别方法提供第二种身份验证方式。
  • 加固 Web 应用,防止攻击。
  • 使用 SSL/TLS 及同步和异步加密创建安全的数据传输系统。

导论

关于安全,你需要觉醒的是

对系统,公司或应用最重要的投资之一是安全和身份基础设施

保护数据没有万无一失的安全方法。身份和数据安全的要务是降低风险、保护严守的数据,当不幸发生时,留出足够的时间采取行动,减少损失。

现有安全模型的问题

  • 不是技术跟不上潜在的攻击媒介的发展步伐,而是开发方式的选择导致系统变得薄弱。

  • 错误的思想:

    • 你以为用户始终会选择最安全的方案(如:强密码、双因素身份验证),实际上用户更愿意选择最简单的方案。
    • 为了确保系统安全,不惜牺牲可用性。
    • 安全措施绝不会遭到破坏。
  • 强密码:不管系统的体量有多大,都始终应该假设数据库的安全措施有可能被攻破,导致数据被盗取。一切敏感的信息都应该妥善加密。

  • 可用性和安全性一定要适当平衡。

  • 数据加密:数据不是为了防止数据被盗,而是要拖慢黑客的步伐,让他们在短时间内无法解密大量数据,或者拖延时间,以便采取必要的行动。

  • 最薄弱的环节,人类:双因素身份认证、密码疲劳。

    解决“密码疲劳”问题:

    • 苹果(Apple)系统的密码管理应用:Keychain。
    • 应用:1Password、Dashlane、LastPass。

    增强用户体验并提升密码强度的三个方式:

    • 显示密码规则;
    • 显示用户输入;
    • 显示强度表;
  • 单点登录(single sign-on,SSO):OpenID、OAuth 1.0、OAuth 2.0、OpenID Connect。

理解密码安全中的熵

  • 判断密码强度的标准机制——信息熵
  • 信息熵的衡量方式:源(如密码)中信息的比特数。通常认为,熵至少为 36.86 比特的密码才是好密码。
  • 衡量密码熵的几个关键特征:所用的符号集、符号集通过大小写字符所做的扩充、密码长度。
  • 作用:预测通过猜测、字典攻击、暴力攻击等手段破解密码的难度。
  • 生成密码的方式:1. 随机生成。2. 人为设置。
  • 因为人类创建的密码难以确定安全性,所以 Web 开发时,通常:
    • 要求用户在创建密码时提高密码的强度。
    • 默默在背后尽自己所能提升数据的安全性(如:加密、限制尝试登录次数)。

区分用户名和密码在系统中的作用

  • 用户名(或公钥)用于认证用户的身份。
  • 密码(或私钥)则以只有用户自己知道的方式证明用户的身份。
  • 身份验证的两种方式:1. 增强系统。2. 删除用户名和密码。

好的和不好的安全算法(对密码而言)

这边的“好”与“不好”指的是对密码进行哈希加密而言

在保护数据和受限的用户信息方面,不是所有的加密算法都具有同等效果。

两种哈希加密算法:

  • 追求快速度的算法,用于快速而准确地加密和解密大量数据。
  • 故意放慢速度的算法,防止暴力破解,用于保护密码。
哈希算法

应该保护哪些数据?

哪些信息必须加密?

任何能认证身份的信息(身份数据、个人信息、支付详情),以及那些对系统至关重要,公开后可能导致架构出现漏洞的信息。

账户恢复机制还需要考虑到社会工程的影响

  • 安全问题的设置重复、搞怪、不易回答、难以记住。(如:小时候我喜欢吃什么菜?你最喜欢读哪本书?)。

你可能感兴趣的:(Web 开发的身份和数据安全_1.导论)