文档与速查表
工作时可随时查阅的速查资料。一次搜索所有速查表。
网络安全
OWASP Top 10 (2021)
十大最严重的 Web 应用安全风险及其含义。
| 风险 | 含义 |
|---|---|
| A01 | 访问控制失效:用户访问了无权访问的数据或执行了无权执行的操作。 |
| A02 | 加密失效:敏感数据在传输或存储时未使用强加密。 |
| A03 | 注入:输入被作为 SQL、shell 或其他代码执行,包括跨站脚本攻击。 |
| A04 | 不安全设计:未从一开始就将安全纳入规划。 |
| A05 | 安全配置错误:默认密码、开放的存储、过于详细的错误信息。 |
| A06 | 易受攻击和过时的组件:存在已知漏洞的旧版库。 |
| A07 | 身份识别与认证失效:登录验证薄弱、未启用 MFA、会话管理不当。 |
| A08 | 软件和数据完整性失效:未经验证的更新和流水线。 |
| A09 | 安全日志记录和监控失效:攻击未被察觉。 |
| A10 | 服务器端请求伪造:诱使服务器访问内部地址。 |
网络安全
事件响应步骤
按实际处理顺序介绍 NIST 事件响应生命周期。
| 步骤 | 你的操作 |
|---|---|
| 准备 | 在事件发生前准备好预案、联系人、工具和备份。 |
| 检测与分析 | 发现并确认事件,评估其严重程度。 |
| 遏制 | 阻止扩散:隔离机器,封禁账户或地址。 |
| 根除 | 清除根源:恶意软件、后门和已被入侵的账户。 |
| 恢复 | 从干净的备份恢复系统,并密切监控。 |
| 经验总结 | 记录事件经过并修复漏洞,避免再次发生。 |
网络技术
常用端口
在服务器、扫描和防火墙规则中常见的端口。
| 端口 | 服务 |
|---|---|
| 20/tcp · FTP data | 文件传输数据通道。未加密,建议使用 SFTP。 |
| 21/tcp · FTP | 文件传输控制。以明文发送密码。 |
| 22/tcp · SSH | 安全远程登录和文件复制(SFTP、SCP)。 |
| 23/tcp · Telnet | 不加密的旧式远程登录方式。请禁用并改用 SSH。 |
| 25/tcp · SMTP | 邮件服务器之间的电子邮件传送。 |
| 53/tcp/udp · DNS | 域名查询。 |
| 67/udp · DHCP | 在局域网中分配 IP 地址。 |
| 80/tcp · HTTP | 未加密的 Web 流量。请将其重定向至 HTTPS。 |
| 110/tcp · POP3 | 下载电子邮件(旧式,未加密)。 |
| 123/udp · NTP | 时间同步。 |
| 143/tcp · IMAP | 读取服务器上的邮件(未加密)。 |
| 161/udp · SNMP | 网络设备监控。请更改默认团体字符串。 |
| 389/tcp · LDAP | Active Directory 等目录服务。 |
| 443/tcp · HTTPS | 加密的 Web 流量(通过 TLS 传输的 HTTP)。 |
| 445/tcp · SMB | Windows 文件共享。切勿将其暴露在互联网上。 |
| 587/tcp · SMTP submission | 使用 TLS 从应用或邮件客户端发送电子邮件。 |
| 993/tcp · IMAPS | 通过 TLS 读取邮件。 |
| 1433/tcp · MS SQL | Microsoft SQL Server 数据库。 |
| 3306/tcp · MySQL | MySQL 和 MariaDB 数据库。请勿向公网开放。 |
| 3389/tcp · RDP | Windows 远程桌面。它是常见的攻击目标:请仅允许通过 VPN 访问。 |
| 5432/tcp · PostgreSQL | PostgreSQL 数据库。请勿对外开放。 |
| 6379/tcp · Redis | Redis 缓存。经常在未设置密码的情况下对外开放。 |
| 8080/tcp · HTTP alt | 开发服务器和代理的常用端口。 |
| 27017/tcp · MongoDB | MongoDB 数据库。请勿向公网开放。 |
软件开发
HTTP 状态码
API 响应和浏览器错误中的数字代表什么。
| 代码 | 含义 |
|---|---|
| 200 OK | 请求成功。 |
| 201 Created | 已创建新资源。 |
| 204 No Content | 操作成功,无需返回内容。 |
| 301 Moved Permanently | 地址已永久更改,请使用新地址。 |
| 304 Not Modified | 你的缓存副本仍是最新的。 |
| 400 Bad Request | 请求格式错误或无效。 |
| 401 Unauthorized | 未登录,或令牌缺失或已过期。 |
| 403 Forbidden | 已登录,但无权执行此操作。 |
| 404 Not Found | 此地址没有任何内容。 |
| 409 Conflict | 请求与当前状态冲突,例如存在重复项。 |
| 429 Too Many Requests | 已触发速率限制,请稍后重试。 |
| 500 Internal Server Error | 服务器出现了问题。 |
| 502 Bad Gateway | 中间服务器从下游服务器收到了无效响应。 |
| 503 Service Unavailable | 服务器过载或因维护而停机。 |
软件开发
Git 命令速查表
几乎每天工作都会用到的 Git 命令。
| 命令 | 功能介绍 |
|---|---|
| git clone <url> | 将代码仓库复制到你的计算机。 |
| git status | 查看更改内容和已暂存的内容。 |
| git add -p | 审查更改后,逐项暂存。 |
| git commit -m "message" | 保存快照并附上说明。 |
| git switch -c feature | 创建并切换到一个分支。 |
| git pull --rebase | 获取最新更改,并在其基础上重新应用你的提交。 |
| git push -u origin feature | 上传你的分支并设置跟踪关系。 |
| git log --oneline --graph | 显示包含分支的精简历史记录。 |
| git diff | 显示尚未暂存的更改。 |
| git stash | 暂存未完成的更改,留待以后处理。 |
| git revert <commit> | 通过新提交撤销某次提交,同时保留历史记录。 |
云与 Linux
Linux 命令速查表
你每天在 Linux 服务器上都会用到的命令。
| 命令 | 功能介绍 |
|---|---|
| pwd | 显示你当前所在的文件夹。 |
| ls -la | 列出所有文件的详细信息,包括隐藏文件。 |
| cd /var/log | 移至其他文件夹。 |
| cat file.txt | 输出文件内容。 |
| less file.txt | 逐页查看长文件。 |
| grep -i error app.log | 查找包含指定单词的行,忽略大小写。 |
| chmod 755 script.sh | 更改文件权限。 |
| chown user:group file | 更改文件所有者。 |
| ps aux | 列出正在运行的进程。 |
| top | 实时查看 CPU 和内存使用情况。 |
| df -h | 显示可用磁盘空间。 |
| sudo apt update && sudo apt upgrade | 在 Debian 或 Ubuntu 上安装更新。 |
| ssh user@host | 连接远程服务器。 |
| tail -f /var/log/syslog | 实时跟踪日志文件新增内容。 |
云与 Linux
Docker 和 Kubernetes 命令
构建、运行和调试容器,然后在集群上管理它们。
| 命令 | 功能介绍 |
|---|---|
| docker build -t app . | 使用此文件夹中的 Dockerfile 构建镜像。 |
| docker run -p 8080:80 app | 运行镜像,并将端口 80 映射到外部端口 8080。 |
| docker ps | 列出正在运行的容器。 |
| docker logs -f <id> | 实时查看容器输出。 |
| docker exec -it <id> sh | 在运行中的容器内打开 shell。 |
| kubectl get pods | 列出当前命名空间中的 pod。 |
| kubectl describe pod <name> | 显示 pod 的详细信息和近期事件。 |
| kubectl logs <pod> | 输出 pod 的日志。 |
| kubectl apply -f deploy.yaml | 根据文件创建或更新资源。 |
| kubectl rollout undo deployment/app | 回滚到上一版本。 |
网络技术
DNS 记录类型
DNS 区域中的常见记录及其各自的作用。
| 记录 | 用途 |
|---|---|
| A | 将名称映射到 IPv4 地址。 |
| AAAA | 将名称映射到 IPv6 地址。 |
| CNAME | 将一个名称设为另一个名称的别名。 |
| MX | 指定接收该域名邮件的邮件服务器。 |
| TXT | 自由文本,用于 SPF、DKIM 和域名所有权验证。 |
| NS | 列出负责该域名的名称服务器。 |
| SOA | 起始授权记录:区域的主要设置和序列号。 |
| PTR | 反向查找:将 IP 地址映射回名称。 |
| SRV | 指向特定服务的主机和端口。 |
| CAA | 限制哪些证书颁发机构可以签发证书。 |
网络技术
CIDR 与子网掩码表
前缀长度、子网掩码、地址总数和可用主机数。
| 前缀 | 掩码 · 总数 · 可用数 |
|---|---|
| /8 | 255.0.0.0 · 16,777,216 · 16,777,214 |
| /16 | 255.255.0.0 · 65,536 · 65,534 |
| /20 | 255.255.240.0 · 4,096 · 4,094 |
| /22 | 255.255.252.0 · 1,024 · 1,022 |
| /24 | 255.255.255.0 · 256 · 254 |
| /25 | 255.255.255.128 · 128 · 126 |
| /26 | 255.255.255.192 · 64 · 62 |
| /27 | 255.255.255.224 · 32 · 30 |
| /28 | 255.255.255.240 · 16 · 14 |
| /29 | 255.255.255.248 · 8 · 6 |
| /30 | 255.255.255.252 · 4 · 2 |
| /32 | 255.255.255.255 · 1 · 1 |
网络技术
网络故障排查命令
用于查明连接在哪一环节中断的命令。仅测试你拥有或获准测试的系统。
| 命令 | 功能介绍 |
|---|---|
| ping -c 4 example.com | 检查主机是否响应,以及响应耗时。 |
| traceroute example.com | 显示数据包沿途经过的每台路由器。 |
| dig example.com A | 查询域名的 DNS 记录。 |
| nslookup example.com | 一种更简单的 DNS 查询方式,适用于大多数系统。 |
| curl -I https://example.com | 仅获取网页的响应头。 |
| ip addr | 显示你的网络接口和 IP 地址。 |
| ip route | 显示流量的发送路径,包括默认网关。 |
| ss -tulpn | 列出监听端口及打开这些端口的程序。 |
| nmap -sV 192.168.1.10 | 扫描你拥有的主机,查看开放端口和服务版本。 |
| tcpdump -i eth0 port 53 | 在网络接口上捕获 DNS 数据包。 |
软件开发
SQL 速查表
大多数数据库操作所用的语句。始终将用户输入作为参数传入,切勿拼接字符串。
| 语句 | 功能介绍 |
|---|---|
| SELECT name, email FROM users; | 读取表中的列。 |
| SELECT * FROM orders WHERE total > 100; | 按条件筛选行。 |
| ORDER BY created_at DESC LIMIT 10 | 对结果排序,仅保留前几行。 |
| INSERT INTO users (name) VALUES ($1); | 添加一行。$1 是通过安全方式填入的参数。 |
| UPDATE users SET name = $1 WHERE id = $2; | 修改现有行。千万别忘了 WHERE。 |
| DELETE FROM sessions WHERE expires_at < now(); | 删除匹配的行。 |
| JOIN orders ON orders.user_id = users.id | 根据共同值合并两个表中的行。 |
| SELECT status, count(*) FROM orders GROUP BY status; | 对行进行分组并计数或求和。 |
| CREATE INDEX ON users (email); | 加快对某一列的搜索。 |
| BEGIN; ... COMMIT; | 将多条语句作为一个事务执行,要么全部成功,要么全部不执行。 |
软件开发
正则表达式速查表
用于搜索和验证文本的模式。可在正则表达式测试工具中试用。
| 模式 | 匹配项 |
|---|---|
| . | 除换行符外的任意单个字符。 |
| \d \w \s | 一个数字、一个单词字符、一个空白字符。 |
| ^ $ | 文本的开头和结尾。 |
| \b | 单词边界。 |
| * + ? | 前一项出现零次或多次、一次或多次、零次或一次。 |
| {2,4} | 上一项的 2 到 4 个之间。 |
| [abc] [^abc] | 列出的任一字符,或未列出的任意字符。 |
| (cat|dog) | 匹配 cat 或 dog 并记住匹配内容的分组。 |
| (?:cat|dog) | 匹配同一分组,但不保存它。 |
| (?=x) | 前瞻断言:仅当后面紧跟 x 时匹配,但不消耗 x。 |
云与 Linux
Bash 脚本基础
用于自动化的 shell 脚本基础组件。
| 语法 | 含义 |
|---|---|
| #!/usr/bin/env bash | 第一行:指定运行脚本的程序。 |
| set -euo pipefail | 遇到错误、未设置的变量或管道失败时停止执行。这是一种更安全的默认设置。 |
| name="web01"; echo "$name" | 设置并使用变量。用引号包裹变量,确保空格被正确处理。 |
| if [ -f "$file" ]; then ... fi | 仅在条件为真时运行命令,此处的条件是文件存在。 |
| for f in *.log; do ... done | 对列表中的每一项重复执行命令。 |
| cmd1 | cmd2 | 将一条命令的输出传给另一条命令。 |
| cmd > out.txt cmd >> out.txt | 将输出写入文件,覆盖原有内容或追加到末尾。 |
| $? | 上一条命令的退出码。0 表示成功。 |
| cmd1 && cmd2 cmd1 || cmd2 | 仅在第一条命令成功或失败时,才运行第二条命令。 |
| chmod +x script.sh && ./script.sh | 赋予脚本执行权限并运行它。 |
云与 Linux
Cron 调度语法
五个字段:分钟、小时、日期、月份和星期。在 Cron 详解中试试。
| 表达式 | 运行 |
|---|---|
| * * * * * | 每分钟。 |
| */15 * * * * | 每 15 分钟。 |
| 0 * * * * | 每个整点。 |
| 0 2 * * * | 每天 02:00。 |
| 30 9 * * 1-5 | 周一至周五的 09:30。 |
| 0 0 1 * * | 每月第一天午夜。 |
| 0 0 * * 0 | 每周日午夜。 |
| 0 8,20 * * * | 每天两次,分别在 08:00 和 20:00。 |
云与 Linux
Linux 权限模式
常见 chmod 值及其使用场景。读取为 4,写入为 2,执行为 1。
| 模式 | 含义 |
|---|---|
| 777 rwxrwxrwx | 所有人都拥有全部权限。几乎从不适用。 |
| 755 rwxr-xr-x | 所有者拥有全部权限,其他用户可读取和执行。常用于程序和文件夹。 |
| 750 rwxr-x--- | 所有者拥有全部权限,所属组可读取和执行,其他用户无权限。 |
| 700 rwx------ | 仅所有者拥有访问权限。适用于私有文件夹。 |
| 664 rw-rw-r-- | 所有者和所属组可编辑,其他用户可读取。 |
| 644 rw-r--r-- | 所有者可编辑,所有人可读取。常用于网页文件。 |
| 640 rw-r----- | 所有者可编辑,所属组可读取。适用于含密码的配置文件。 |
| 600 rw------- | 仅所有者可读写。SSH 私钥必须使用此权限。 |
| 400 r-------- | 仅所有者可读取。适用于永不更改的密钥。 |
网络安全
Web 安全响应头和 Cookie 标志
让浏览器强制执行更安全行为的响应头。
| 头部或标志 | 保护对象 |
|---|---|
| Content-Security-Policy | 限制脚本、图片和框架的加载来源,有效防御 XSS。 |
| Strict-Transport-Security | 告知浏览器始终通过 HTTPS 访问此网站。 |
| X-Content-Type-Options: nosniff | 阻止浏览器猜测文件类型并运行伪装脚本。 |
| X-Frame-Options: DENY | 防止其他网站通过框架嵌入你的网站(点击劫持)。 |
| Referrer-Policy | 控制向其他网站发送多少你的地址信息。 |
| Permissions-Policy | 禁用页面的摄像头或定位等浏览器功能。 |
| Set-Cookie: HttpOnly | 阻止 JavaScript 访问 Cookie,使 XSS 无法窃取它。 |
| Set-Cookie: Secure | 仅通过 HTTPS 发送 Cookie。 |
| Set-Cookie: SameSite=Lax | 限制跨站请求中的 Cookie,减少 CSRF 风险。 |
| Access-Control-Allow-Origin | CORS:允许哪些其他网站读取你的 API 响应。 |
网络安全
密码学概览
不同任务应使用哪些算法,以及应避免哪些算法。
| 算法 | 概念与使用场景 |
|---|---|
| AES-256-GCM | 用于静态数据和传输中数据的快速对称加密。加密和解密使用同一密钥。 |
| ChaCha20-Poly1305 | 一种现代对称加密算法,非常适合没有硬件 AES 支持的手机。 |
| RSA 2048+ | 公钥加密与签名。速度较慢,主要用于密钥交换。 |
| ECDSA / Ed25519 | 紧凑的公钥签名,密钥比 RSA 更短。 |
| Diffie-Hellman | 让双方通过公开信道协商共享密钥。 |
| SHA-256 | 用于生成指纹和完整性校验的密码学哈希,不适合用于密码。 |
| HMAC | 将哈希与密钥结合,用于证明消息未被篡改。 |
| bcrypt / Argon2 | 专为存储密码设计的慢速加盐哈希。 |
| TLS 1.3 | HTTPS 底层使用的协议。请使用该协议并禁用旧版本。 |
| MD5 / SHA-1 | 已不适合安全用途。切勿用于签名或密码。 |
网络安全
常见攻击术语表
用通俗语言解释最常见的攻击。
| 攻击 | 概念介绍 |
|---|---|
| 网络钓鱼 | 诱骗人们泄露密码或点击恶意链接的虚假消息。 |
| 勒索软件 | 锁定文件并索要赎金才允许解锁的恶意软件。 |
| DDoS | 利用大量机器向服务发送海量流量,导致正常用户无法访问。 |
| 中间人攻击 | 秘密介入通信双方之间,读取或篡改双方的消息。 |
| 暴力破解 | 尝试大量密码,直到找到正确的密码。 |
| 撞库 | 在其他网站上尝试泄露的用户名和密码组合。 |
| 零日漏洞 | 利用厂商尚未知晓的漏洞发动的攻击,因此还没有补丁。 |
| 供应链攻击 | 通过入侵供应商或软件包来攻击其客户。 |
| 权限提升 | 将有限权限提升为管理员权限。 |
| 社会工程学 | 通过操纵人而非计算机来获取访问权限。 |
| 内部威胁 | 拥有合法访问权限的人故意或意外造成的危害。 |
网络安全
MITRE ATT&CK 战术
攻击者经历的 14 个阶段,为防御者提供共同语言。
| 战术 | 攻击者的目标 |
|---|---|
| 侦察 | 收集目标信息。 |
| 资源开发 | 为攻击准备基础设施、账号和工具。 |
| 初始访问 | 获取初始立足点,例如通过网络钓鱼。 |
| 执行 | 在系统上运行恶意代码。 |
| 持久化 | 在重启和密码更改后保持访问权限。 |
| 权限提升 | 获取更高权限。 |
| 防御规避 | 避免被检测或阻止。 |
| 凭据访问 | 窃取账号名称和密码。 |
| 发现 | 了解环境及其中的资源。 |
| 横向移动 | 从一个系统横向移动到网络中的其他系统。 |
| 收集 | 收集感兴趣的数据。 |
| 命令与控制 | 与已被入侵的系统通信,向其下达指令。 |
| 数据外传 | 从网络中窃取数据。 |
| 影响 | 破坏、摧毁或锁定系统和数据。 |