文档与速查表

工作时可随时查阅的速查资料。一次搜索所有速查表。

网络安全

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 · LDAPActive Directory 等目录服务。
443/tcp · HTTPS加密的 Web 流量(通过 TLS 传输的 HTTP)。
445/tcp · SMBWindows 文件共享。切勿将其暴露在互联网上。
587/tcp · SMTP submission使用 TLS 从应用或邮件客户端发送电子邮件。
993/tcp · IMAPS通过 TLS 读取邮件。
1433/tcp · MS SQLMicrosoft SQL Server 数据库。
3306/tcp · MySQLMySQL 和 MariaDB 数据库。请勿向公网开放。
3389/tcp · RDPWindows 远程桌面。它是常见的攻击目标:请仅允许通过 VPN 访问。
5432/tcp · PostgreSQLPostgreSQL 数据库。请勿对外开放。
6379/tcp · RedisRedis 缓存。经常在未设置密码的情况下对外开放。
8080/tcp · HTTP alt开发服务器和代理的常用端口。
27017/tcp · MongoDBMongoDB 数据库。请勿向公网开放。

软件开发

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 与子网掩码表

前缀长度、子网掩码、地址总数和可用主机数。

前缀掩码 · 总数 · 可用数
/8255.0.0.0 · 16,777,216 · 16,777,214
/16255.255.0.0 · 65,536 · 65,534
/20255.255.240.0 · 4,096 · 4,094
/22255.255.252.0 · 1,024 · 1,022
/24255.255.255.0 · 256 · 254
/25255.255.255.128 · 128 · 126
/26255.255.255.192 · 64 · 62
/27255.255.255.224 · 32 · 30
/28255.255.255.240 · 16 · 14
/29255.255.255.248 · 8 · 6
/30255.255.255.252 · 4 · 2
/32255.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-OriginCORS:允许哪些其他网站读取你的 API 响应。

网络安全

密码学概览

不同任务应使用哪些算法,以及应避免哪些算法。

算法概念与使用场景
AES-256-GCM用于静态数据和传输中数据的快速对称加密。加密和解密使用同一密钥。
ChaCha20-Poly1305一种现代对称加密算法,非常适合没有硬件 AES 支持的手机。
RSA 2048+公钥加密与签名。速度较慢,主要用于密钥交换。
ECDSA / Ed25519紧凑的公钥签名,密钥比 RSA 更短。
Diffie-Hellman让双方通过公开信道协商共享密钥。
SHA-256用于生成指纹和完整性校验的密码学哈希,不适合用于密码。
HMAC将哈希与密钥结合,用于证明消息未被篡改。
bcrypt / Argon2专为存储密码设计的慢速加盐哈希。
TLS 1.3HTTPS 底层使用的协议。请使用该协议并禁用旧版本。
MD5 / SHA-1已不适合安全用途。切勿用于签名或密码。

网络安全

常见攻击术语表

用通俗语言解释最常见的攻击。

攻击概念介绍
网络钓鱼诱骗人们泄露密码或点击恶意链接的虚假消息。
勒索软件锁定文件并索要赎金才允许解锁的恶意软件。
DDoS利用大量机器向服务发送海量流量,导致正常用户无法访问。
中间人攻击秘密介入通信双方之间,读取或篡改双方的消息。
暴力破解尝试大量密码,直到找到正确的密码。
撞库在其他网站上尝试泄露的用户名和密码组合。
零日漏洞利用厂商尚未知晓的漏洞发动的攻击,因此还没有补丁。
供应链攻击通过入侵供应商或软件包来攻击其客户。
权限提升将有限权限提升为管理员权限。
社会工程学通过操纵人而非计算机来获取访问权限。
内部威胁拥有合法访问权限的人故意或意外造成的危害。

网络安全

MITRE ATT&CK 战术

攻击者经历的 14 个阶段,为防御者提供共同语言。

战术攻击者的目标
侦察收集目标信息。
资源开发为攻击准备基础设施、账号和工具。
初始访问获取初始立足点,例如通过网络钓鱼。
执行在系统上运行恶意代码。
持久化在重启和密码更改后保持访问权限。
权限提升获取更高权限。
防御规避避免被检测或阻止。
凭据访问窃取账号名称和密码。
发现了解环境及其中的资源。
横向移动从一个系统横向移动到网络中的其他系统。
收集收集感兴趣的数据。
命令与控制与已被入侵的系统通信,向其下达指令。
数据外传从网络中窃取数据。
影响破坏、摧毁或锁定系统和数据。