跳到主要内容

网络安全基础入门

安全的目标不是“绝对不被攻击”,而是在成本可控的前提下,降低风险、减少损失、提升发现和恢复能力。

学习安全要同时理解攻击和防守,但所有练习都必须在授权环境中进行。

一、安全的三个核心目标​

经典安全目标是 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多因素认证

七、密码学基础​

常见概念:

概念作用
哈希数据摘要,不可逆
对称加密加密和解密用同一个密钥
非对称加密公钥加密,私钥解密或签名
数字签名验证身份和完整性
TLSHTTPS 的安全基础

注意:不要自己发明加密算法,使用成熟库和标准协议。

八、安全日志和监控​

应该重点记录:

  • 登录成功和失败;
  • 权限变更;
  • 密码修改;
  • 管理员操作;
  • 文件上传;
  • 支付和订单变更;
  • 高频失败请求;
  • 异常 IP;
  • 重要配置变更。

告警示例:

  • 短时间大量登录失败;
  • 后台接口异常访问;
  • 同一账号异地登录;
  • 服务器出现异常进程;
  • 关键文件被修改;
  • 出站流量异常。

九、应急响应流程​

发生安全事件时,先止损,再分析。

注意:

  • 不要立刻删除所有文件,可能破坏证据。
  • 先保存日志、进程、网络连接、可疑文件。
  • 重要系统优先隔离网络或切换备用环境。
  • 修复后要检查是否留下后门。

十、学习路线​

建议顺序:

  1. 网络基础:HTTP、DNS、TCP/IP。
  2. Linux 基础:权限、进程、日志、服务。
  3. Web 开发基础:前端、后端、数据库。
  4. Web 安全:SQL 注入、XSS、CSRF、上传漏洞。
  5. 身份认证和权限模型。
  6. 密码学基础。
  7. 安全测试工具。
  8. 日志分析和应急响应。
  9. 云安全和容器安全。
  10. 安全开发生命周期。

十一、入门练习​

可以在本地授权环境中练习:

  • 搭建一个简单登录系统;
  • 加入密码哈希和登录失败限制;
  • 给接口加权限校验;
  • 演示 SQL 注入风险,再改成参数化查询;
  • 演示 XSS 风险,再做输出转义;
  • 配置 HTTPS;
  • 记录安全日志。

十二、常见误区​

  • 以为用了 HTTPS 就安全。
  • 只做登录,不做权限校验。
  • 后台接口没有访问控制。
  • 把密钥写进代码仓库。
  • 依赖库长期不更新。
  • 日志里打印密码、Token、身份证号。
  • 没有备份和恢复演练。

总结​

安全建设的基本路径是:

入门阶段先掌握 Web 安全、Linux 安全、认证授权和日志监控,再逐步深入漏洞挖掘、云安全和安全工程体系。