网络安全基础入门
安全的目标不是“绝对不被攻击”,而是在成本可控的前提下,降低风险、减少损失、提升发现和恢复能力。
学习安全要同时理解攻击和防守,但所有练习都必须在授权环境中进行。
一、安全的三个核心目标
经典安全目标是 CIA:
| 目标 | 含义 | 示例 |
|---|---|---|
| 机密性 | 不该看到的人看不到 | 密码、合同、用户隐私 |
| 完整性 | 数据不被未授权篡改 | 订单金额、配置文件 |
| 可用性 | 系统需要时能正常使用 | 网站、支付、接口服务 |
安全建设就是围绕这三个目标做防护、检测和恢复。
二、常见安全风险
| 风险 | 说明 |
|---|---|
| 弱口令 | 密码简单或重复使用 |
| 越权访问 | 普通用户访问管理员数据 |
| SQL 注入 | 把恶意 SQL 拼进查询 |
| XSS | 在页面中执行恶意脚本 |
| CSRF | 借用户身份发起伪造请求 |
| 文件上传漏洞 | 上传木马或恶意文件 |
| 命令执行 | 用户输入被当作系统命令执行 |
| 信息泄露 | 日志、错误页、配置暴露敏感信息 |
| 依赖漏洞 | 第三方组件存在已知漏洞 |
| 配置错误 | 端口暴露、权限过大、默认密码 |
三、安全防护的基本思路
1. 最小权限
账号、服务、数据库、文件都只给完成任务所需的最小权限。
2. 输入不可信
所有来自用户、外部接口、文件、消息队列的数据都要验证。
3. 分层防御
不要依赖单点防护。应用、网络、主机、数据库、日志都要有安全措施。
4. 默认拒绝
没有明确允许的访问默认拒绝,尤其是后台、管理接口和内网服务。
5. 可审计
重要操作必须记录日志,包括谁、什么时间、做了什么、结果如何。
四、Web 安全基础
1. SQL 注入
风险代码常见形态:
SELECT * FROM users WHERE name = '${userInput}'
防护方法:
- 使用参数化查询;
- 不拼接 SQL;
- 限制数据库账号权限;
- 对输入做格式校验;
- 不把详细 SQL 错误返回给用户。
2. XSS
XSS 是把恶意脚本注入页面。
防护方法:
- 输出时做 HTML 转义;
- 富文本使用白名单过滤;
- 设置 Content Security Policy;
- Cookie 设置 HttpOnly;
- 不直接渲染不可信 HTML。
3. CSRF
CSRF 是诱导用户在已登录状态下发起非本意请求。
防护方法:
- 使用 CSRF Token;
- 检查 Origin / Referer;
- Cookie 设置 SameSite;
- 重要操作二次确认。
4. 文件上传
防护方法:
- 限制文件类型和大小;
- 检查文件真实内容;
- 上传目录不允许执行脚本;
- 文件重命名;
- 使用对象存储隔离;
- 图片重新编码处理。
五、系统和服务器安全
基础加固:
- 使用 SSH Key 登录;
- 禁止 root 直接登录;
- 关闭不必要端口;
- 配置防火墙;
- 定期更新系统补丁;
- 给服务使用独立低权限用户;
- 敏感文件权限最小化;
- 日志集中保存;
- 定期检查异常进程和登录记录。
常用检查方向:
who
last
ps aux
ss -tulnp
df -h
find /tmp -type f
六、密码和认证
密码安全原则:
- 密码不能明文存储;
- 使用强哈希算法;
- 加盐;
- 限制登录失败次数;
- 支持 MFA;
- 敏感操作重新验证。
常见认证方式:
| 方式 | 说明 |
|---|---|
| Session | 服务端保存登录态 |
| JWT | 令牌中包含声明信息 |
| OAuth2 | 第三方授权登录 |
| API Key | 服务间调用凭证 |
| MFA | 多因素认证 |
七、密码学基础
常见概念:
| 概念 | 作用 |
|---|---|
| 哈希 | 数据摘要,不可逆 |
| 对称加密 | 加密和解密用同一个密钥 |
| 非对称加密 | 公钥加密,私钥解密或签名 |
| 数字签名 | 验证身份和完整性 |
| TLS | HTTPS 的安全基础 |
注意:不要自己发明加密算法,使用成熟库和标准协议。
八、安全日志和监控
应该重点记录:
- 登录成功和失败;
- 权限变更;
- 密码修改;
- 管理员操作;
- 文件上传;
- 支付和订单变更;
- 高频失败请求;
- 异常 IP;
- 重要配置变更。
告警示例:
- 短时间大量登录失败;
- 后台接口异常访问;
- 同一账号异地登录;
- 服务器出现异常进程;
- 关键文件被修改;
- 出站流量异常。
九、应急响应流程
发生安全事件时,先止损,再分析。
注意:
- 不要立刻删除所有文件,可能破坏证据。
- 先保存日志、进程、网络连接、可疑文件。
- 重要系统优先隔离网络或切换备用环境。
- 修复后要检查是否留下后门。
十、学习路线
建议顺序:
- 网络基础:HTTP、DNS、TCP/IP。
- Linux 基础:权限、进程、日志、服务。
- Web 开发基础:前端、后端、数据库。
- Web 安全:SQL 注入、XSS、CSRF、上传漏洞。
- 身份认证和权限模型。
- 密码学基础。
- 安全测试工具。
- 日志分析和应急响应。
- 云安全和容器安全。
- 安全开发生命周期。
十一、入门练习
可以在本地授权环境中练习:
- 搭建一个简单登录系统;
- 加入密码哈希和登录失败限制;
- 给接口加权限校验;
- 演示 SQL 注入风险,再改成参数化查询;
- 演示 XSS 风险,再做输出转义;
- 配置 HTTPS;
- 记录安全日志。
十二、常见误区
- 以为用了 HTTPS 就安全。
- 只做登录,不做权限校验。
- 后台接口没有访问控制。
- 把密钥写进代码仓库。
- 依赖库长期不更新。
- 日志里打印密码、Token、身份证号。
- 没有备份和恢复演练。
总结
安全建设的基本路径是:
入门阶段先掌握 Web 安全、Linux 安全、认证授权和日志监控,再逐步深入漏洞挖掘、云安全和安全工程体系。