Skip to content

Latest commit

 

History

History
85 lines (71 loc) · 3.25 KB

README-zh.md

File metadata and controls

85 lines (71 loc) · 3.25 KB

实用性 WEB 开发人员安全须知

目标读者

安全问题主要由以下两类原因导致:

  1. 那些刚入门的无法区分 MD5 和 bcrypt 作用的开发者
  2. 那些知道这件事但忘记/忽略了的开发者

我们的详细说明应该可以帮到第 1 类开发者,而我们希望我们的 checklist 可以帮到第 2 类的开发者构建更多的安全系统。这并不是一个综合性的全面指南,只是覆盖了大多数我们在过去发现的常见问题。

目录

  1. 安全Checklist
  2. 什么东西会出问题?
  3. 安全地传输数据: HTTPS 详解
  4. 权限验证: 我是谁?
    4.1 基于表单的权限验证
    4.2 基础鉴权
    4.3 一次是不够的、二次、三次(验证)....
    4.4 为什么使用不安全的文本消息? HOTP & TOTP 介绍
    4.5 处理密码重置
  5. 权限验证: 我能做什么?
    5.1 基于 Token 的权限验证
    5.2 OAuth 和 OAuth2
    5.3 JWT(JSON Web Token)
  6. 数据校验和过滤: 绝不信任用户输入
    6.1 校验和过滤用户输入
    6.2 过滤输出
    6.3 跨站脚本攻击(XSS)
    6.4 注入攻击
    6.5 用户上传
    6.6 用户篡改输入
  7. 纯文本 != 编码 != 加密 != 哈希
    7.1 通用编码模式
    7.2 加密
    7.3 哈希和单向函数(功能)
    7.4 哈希速度对照表
  8. 密码: dadada、123456、cute@123
    8.1 密码策略
    8.2 密码存储
    8.3 没有密码的生活
  9. 公钥加密
  10. 会话: 请记住我
    10.1 哪里存储状态?
    10.2 使会话失效
    10.3 Cookie 怪物和你
  11. 加固安全, 一次只有一个头信息
    11.1 安全的 web header
    11.2 第三方代码的数据集成检测
    11.3 证书绑定
  12. 配置错误
    12.1 云上准备: 端口、Shodan、AWS
    12.2 亲,你开了 debug 模式
    12.3 日志(或者没有日志)
    12.4 监控
    12.5 最低优先级原理
    12.6 (请求)频率限制 和 Captchas
    12.7 把项目的密钥和密码保存在文件上
    12.8 DNS: 关于子域名和被遗忘的宠物计划
    12.9 打补丁和更新
  13. 攻击: 当坏人来临
    13.1 点击劫持
    13.2 跨站请求伪造
    13.3 拒绝服务
    13.4 服务端请求伪造
  14. 互联网公司漏洞统计
  15. 重造轮子,但做出来是方的
    15.1 Python 的安全库和包
    15.2 NodeJS 的安全库和包
    15.3 学习资料
  16. 掌握良好的安全习惯
  17. 安全性 vs 可用性
  18. 回到第 1 条: 安全 Checklist 解释

我们是谁?

我们是全栈开发工程师,讨厌看到那些所谓为了做某件事情而 hack,但写了一堆不安全代码的开发者。在过去六个月,我们保护了超过 1500w 信用卡信息不被泄露,超过 4500w 的用户个人信息不被盗取,潜在的拯救了大量公司的倒闭。最近,我们发现的一个安全问题,可以导致一家比特币交易公司因数据泄露而倒闭。我们帮助了若干创业公司让他们的系统更安全,大多数都是免费的,有时候甚至连『谢谢』都没收到 :)

如果你不同意我们的观点或者找到 bug,请开启一个 issue 或者提交一个 PR 给我们。另外,你也可以通过 hello@fallible.co 与我们交流。