security-guide-for-developers README

The project's README from github.com/FallibleInc/security-guide-for-developers. As one markdown file: README.md.

A practical security guide for web developers (Work in progress)

The intended audience

Security issues happen for two reasons -

  1. Developers who have just started and cannot really tell a difference between using MD5 or bcrypt.
  2. Developers who know stuff but forget/ignore them.

Our detailed explanations should help the first type while we hope our checklist helps the second one create more secure systems. This is by no means a comprehensive guide, it just covers stuff based on the most common issues we have discovered in the past.

Contents

  1. The Security Checklist
  2. What can go wrong?
  3. Securely transporting stuff: HTTPS explained
  4. Authentication: I am who I say I am
    4.1 Form based authentication
    4.2 Basic authentication
    4.3 One is not enough, 2 factor, 3 factor, ....
    4.4 Why use insecure text messages? Introducing HOTP & TOTP
    4.5 Handling password resets
  5. Authorization: What am I allowed to do?
    5.1 Token based Authorization
    5.2 OAuth & OAuth2
    5.3 JWT
  6. Data Validation and Sanitation: Never trust user input
    6.1 Validating and Sanitizing Inputs
    6.2 Sanitizing Outputs
    6.3 Cross Site Scripting
    6.4 Injection Attacks
    6.5 User uploads
    6.6 Tamper-proof user inputs
  7. Plaintext != Encoding != Encryption != Hashing
    7.1 Common encoding schemes
    7.2 Encryption
    7.3 Hashing & One way functions
    7.4 Hashing speeds cheatsheet
  8. Passwords: dadada, 123456 and cute@123
    8.1 Password policies
    8.2 Storing passwords
    8.3 Life without passwords
  9. Public Key Cryptography
  10. Sessions: Remember me, please
    10.1 Where to save state?
    10.2 Invalidating sessions
    10.3 Cookie monster & you
  11. Fixing security, one header at a time
    11.1 Secure web headers
    11.2 Data integrity check for 3rd party code
    11.3 Certificate Pinning
  12. Configuration mistakes
    12.1 Provisioning in cloud: Ports, Shodan & AWS
    12.2 Honey, you left the debug mode on
    12.3 Logging (or not logging)
    12.4 Monitoring
    12.5 Principle of least privilege
    12.6 Rate limiting & Captchas
    12.7 Storing project secrets and passwords in a file
    12.8 DNS: Of subdomains and forgotten pet-projects
    12.9 Patching & Updates
  13. Attacks: When the bad guys arrive
    13.1 Clickjacking
    13.2 Cross Site Request Forgery
    13.3 Denial of Service
    13.4 Server Side Request Forgery
  14. Stats about vulnerabilities discovered in Internet Companies
  15. On reinventing the wheel, and making it square
    15.1 Security libraries and packages for Python
    15.2 Security libraries and packages for Node/JS
    15.3 Learning resources
  16. Maintaining a good security hygiene
  17. Security Vs Usability
  18. Back to Square 1: The Security Checklist explained

Who are we?

We are full stack developers who just grew tired of watching how developers were lowering the barrier to call something a hack by writing unsecure code. In the past six months, we have prevented leaks of more than 15 million credit card details, personal details of over 45 million users and potentially saved companies from shutting down. Recently, we discovered an issue that could result in system takeover and data leak in a bitcoin institution. We have helped several startups secure their systems, most of them for free, sometimes without even getting a thank you in response :)

If you disagree with something or find a bug please open an issue or file a PR. Alternatively, you can talk to us on [email protected]

security-guide-for-developers (FallibleInc/security-guide-for-developers)

Searching Database…

这是什么?这是一份面向 Web 开发者的实用安全指南,讲解常见的安全问题(身份验证、加密、会话、攻击等),并提供一份检查清单,帮助你构建更安全的系统。
这是一个我要运行的工具,还是一本我要读的书?它是一份书面指南/检查清单(类似书籍的 README),而不是一个需要安装和运行的代码库或工具。
新手应该从哪里开始?先从「安全检查清单」一节开始,然后阅读「可能会出什么问题?」了解背景,再逐个阅读关于身份验证、加密、会话和攻击的专题章节。
这份指南完整了吗?是不是已经定稿?没有。作者明确标注它仍在编写中,并说明它只涵盖他们见过的最常见问题,并不包括所有可能的漏洞。
这份指南是为谁准备的?它面向两类读者:刚接触安全、分不清 MD5 和 bcrypt 的开发者,以及了解安全规则但常常忘记或忽视这些规则的资深开发者。
检查清单涵盖哪些主题?HTTPS、身份验证(表单登录、基础认证、2FA/HOTP/TOTP、密码重置)、授权(令牌、OAuth、JWT)、输入验证与清理、编码、加密与哈希的区别、密码存储、会话与 Cookie、安全响应头,以及 XSS、CSRF、点击劫持、DoS 和 SSRF 等常见攻击。
它会推荐具体的安全库吗?会。它有一节列出了 Python 和 Node/JS 的安全库与软件包,并附上进一步学习的资料。
Size
5.9 MB
Stars
21.1K
Updated
CommitAug 30
Age
10y
Commits · 90 Days