计算机三级(两周从0到考试及格)

只有知识点,题目另外找或者ai帮忙出

天数主要内容当天目标
Day 1密码学基础AES、DES、RSA、Hash、数字签名
Day 2数字证书与身份认证CA、PKI、数字证书、常见认证方式
Day 3访问控制DAC、MAC、RBAC、权限管理
Day 4操作系统安全用户权限、进程、文件权限、系统加固
Day 5数据库安全数据库权限、备份、审计、SQL 注入基础
Day 6网络攻击基础扫描、嗅探、欺骗、DoS/DDoS、中间人攻击
Day 7网络防御防火墙、IDS、IPS、安全审计
Day 8网络安全协议HTTPS、SSL/TLS、IPSec、VPN、SSH
Day 9Web 安全SQL 注入、XSS、CSRF、文件上传漏洞等
Day 10恶意代码与漏洞病毒、蠕虫、木马、后门、漏洞与补丁
Day 11信息安全管理风险评估、安全策略、应急响应、灾难恢复
Day 12法律法规与标准等级保护、网络安全相关法规、安全标准
Day 13真题强化完整做题、统计薄弱点、集中补错题
Day 14考前冲刺高频考点总复习 + 模拟考试 + 错题二刷
时间学什么目标
Day 1信息安全基础 + 密码学建立基本框架
Day 2密码学 + 身份认证重点章节
Day 3访问控制 + 审计吃透常见概念
Day 4操作系统安全会做常见题
Day 5数据库安全权限、攻击、防护
Day 6网络攻击攻击方式要分清
Day 7防火墙、IDS/IPS高频考点
Day 8PKI、VPN、安全协议高频考点
Day 9Web 安全SQL 注入/XSS 等
Day 10漏洞、恶意程序木马、病毒等
Day 11安全管理、风险评估记忆类拿分
Day 12标准、法规 + 第一套真题查缺补漏
Day 13真题 + 错题二刷冲 60+
Day 14高频知识点总复习 + 模拟稳定 70 左右

第一天

对称加密、非对称加密、Hash、数字签名

1. 对称加密

特点:加密和解密使用同一个密钥。

你可以理解成:我和你共用一把钥匙,我用它锁,你用同一把钥匙开。

常见算法:

  • DES
  • 3DES
  • AES

记忆:

对称 = 一把钥匙,速度快。

2. 非对称加密

特点:有两把钥匙:

公钥 + 私钥

两者成对出现。

最重要的考试规律:

公钥加密 → 私钥解密

比如我想把秘密发给你,我用你的公钥加密。

因为你的公钥大家都能拿到。

但是加密以后,只有你的私钥才能解开。

经典算法:

RSA

记忆:

RSA = 公私两把钥匙。

3. Hash / 哈希

这是特别容易和“加密”混淆的地方。

Hash 不是普通意义上的加密。

它的核心是:

输入一段数据 → 计算出一个固定长度的摘要。

重要特点:

单向性。

正常情况下,不能从 Hash 值直接还原出原文。

常见算法:

  • MD5
  • SHA-1
  • SHA-256

记忆:

Hash = 摘要 = 完整性。

4. 数字签名

这是三级信息安全里很重要的一块。

你先直接背住:

私钥签名,公钥验证。

注意,这和刚才的保密通信正好反过来。

保密:

公钥加密,私钥解密。

签名:

私钥签名,公钥验证。

一张表记住

技术关键词常见算法/用途
对称加密同一个密钥AES、DES
非对称加密公钥+私钥RSA
Hash单向摘要MD5、SHA
数字签名私钥签名、公钥验证身份、完整性、不可否认

最重要的四句话:

AES 是对称加密。

RSA 是非对称加密。

SHA 是 Hash。

数字签名:私钥签名,公钥验证。

第二天

数字证书、CA、PKI、身份认证、三类认证因素、单因素 / 双因素 / 多因素认证、口令认证常见风险、安全审计

一、数字证书

数字证书最核心的作用:

把“某个身份”和“某个公钥”绑定起来。

比如你访问一个网站,网站告诉你:

“这是我的公钥。”

但问题是,你怎么知道这个公钥真的是这个网站的?

所以需要数字证书来证明:

这个公钥确实属于这个网站。

数字证书里常见内容包括:

  • 证书持有者身份信息
  • 公钥
  • 证书有效期
  • CA 信息
  • CA 的数字签名

最重要记忆:

数字证书 = 身份 + 公钥。

二、CA

CA:

Certificate Authority

中文常叫:

证书认证机构 / 认证中心

它的主要作用是:

签发、管理数字证书。

可以把 CA 理解成一个可信第三方。

比如:

网站说“这是我的公钥”。

CA 相当于帮它证明:

“我验证过了,这个公钥确实属于这个网站。”

所以看到题目:

数字证书由谁签发?

优先选:

CA

三、PKI

PKI:

Public Key Infrastructure

中文:

公钥基础设施

PKI 不是某一个算法。

它是一整套围绕:

  • 公钥
  • 私钥
  • 数字证书
  • CA
  • 证书管理
  • 证书撤销

建立起来的体系。

记忆:

CA 是机构,证书是凭证,PKI 是整个体系。

四、身份认证

身份认证解决的问题是:

你是谁?

比如登录系统时:

输入用户名和密码。

系统是在确认:

“这个人是不是账户真正的主人?”

这就叫身份认证。

注意和访问控制区分:

  • 身份认证:你是谁
  • 访问控制:你能做什么

记忆:

认证看身份,授权看权限。

五、三类身份认证因素

1. 知识因素

也就是:

你知道什么

例如:

  • 密码
  • PIN
  • 安全问题答案

记忆:

脑子里知道的。

2. 持有因素

也就是:

你拥有什么

例如:

  • 手机
  • 银行卡
  • U 盾
  • USB Token
  • 智能卡

记忆:

手里拿着的。

3. 生物特征因素

也就是:

你是什么

例如:

  • 指纹
  • 人脸
  • 虹膜
  • 声纹

记忆:

长在你身上的。

三类因素汇总
类型例子
知识因素密码、PIN
持有因素手机、银行卡、Token
生物因素指纹、人脸、虹膜

六、双因素认证 2FA

双因素认证的关键不是“用了两个东西”,而是:

用了两种不同类型的认证因素。

例如:

密码 + 手机验证码

密码属于:

知识因素

手机属于:

持有因素

所以这是:

双因素认证

但是:

密码 + 安全问题

两者其实都属于:

知识因素

所以严格来说,不属于典型的双因素认证。

记住:

2FA = 两种不同类型的因素。

七、多因素认证 MFA

MFA:

Multi-Factor Authentication

即:

多因素认证

例如:

密码 + 手机 + 指纹

分别属于:

  • 知识因素
  • 持有因素
  • 生物因素

这种认证方式一般比单纯密码安全。

八、口令认证常见风险

密码认证虽然常见,但风险很多:

  • 弱密码
  • 密码重复使用
  • 暴力破解
  • 字典攻击
  • 密码泄露
  • 钓鱼攻击

比如:

1
123456

这种密码非常容易被猜出来。

常见防护方式包括:

  • 提高密码复杂度
  • 限制连续登录失败次数
  • 定期修改密码
  • 使用 MFA
  • 对密码安全存储

九、安全审计

安全审计可以理解成:

记录系统里发生了什么,并用于后续检查。

例如系统日志记录:

  • 谁登录了
  • 什么时间登录
  • 访问了什么文件
  • 修改了什么数据
  • 是否登录失败

安全审计主要用于:

  • 发现异常
  • 追踪责任
  • 事故调查
  • 分析攻击行为

记忆:

安全审计 = 记录 + 监控 + 追踪。

十、三个概念一定区分清楚

技术核心问题
身份认证你是谁?
访问控制你能做什么?
安全审计你做了什么?

一句话记忆:

认证看是谁,授权看能干啥,审计看干了啥。

第三天

访问控制;主体、客体、权限;DAC;MAC;RBAC;最小权限原则;权限分离原则

一、什么是访问控制

身份认证解决:

你是谁?

访问控制解决:

你能做什么?

例如小王登录公司系统后,系统已经确认“小王确实是小王”。

接下来还要判断:

  • 小王能不能看工资表?
  • 能不能修改员工数据?
  • 能不能删除数据库?

这些都属于访问控制。

记忆:

认证管身份,访问控制管权限。

二、主体、客体、权限

主体 Subject

主动发起访问的一方,例如:

  • 用户
  • 程序
  • 进程

例如:

小王读取文件。

“小王”就是主体。

客体 Object

被访问的资源,例如:

  • 文件
  • 数据库
  • 设备
  • 程序

上面的“文件”就是客体。

权限

主体可以对客体执行什么操作,例如:

  • 读 Read
  • 写 Write
  • 执行 Execute
  • 删除 Delete

所以:

主体 + 客体 + 操作权限 = 访问控制的基本关系。

三、DAC:自主访问控制

DAC:

Discretionary Access Control

中文:

自主访问控制

核心特点:

资源所有者自己决定谁可以访问。

例如:

你创建一个文件,然后设置:

  • 小王可以读取
  • 小李可以修改
  • 小张不能访问

这就是 DAC。

记忆:

DAC 看主人。

四、MAC:强制访问控制

MAC:

Mandatory Access Control

中文:

强制访问控制

它不是文件主人想给谁权限就给谁。

而是:

系统按照统一安全策略强制执行。

典型场景就是军事、涉密系统。

例如文件有:

  • 绝密
  • 机密
  • 秘密
  • 普通

用户也具有相应的安全级别。

系统根据安全规则决定你能不能访问。

即使你是文件创建者,也不一定能够随意改变权限。

记忆:

MAC 看密级。

五、RBAC:基于角色的访问控制

RBAC:

Role-Based Access Control

中文:

基于角色的访问控制

核心:

用户 → 角色 → 权限

例如公司有:

普通员工

权限:

  • 查看个人资料
  • 提交请假

财务人员

权限:

  • 查看账单
  • 修改财务数据

管理员

权限:

  • 创建用户
  • 删除用户
  • 修改系统配置

公司新来一个财务人员,只需要给他:

“财务人员”角色

他就自动得到对应权限。

记忆:

RBAC 看角色。

六、三种访问控制一定要会区分

类型核心依据典型场景
DAC资源所有者普通文件权限
MAC安全级别军事、涉密系统
RBAC用户角色公司、企业系统

最重要口诀:

DAC 看主人,MAC 看密级,RBAC 看角色。

七、最小权限原则

这是信息安全里非常重要的原则。

核心:

只给用户完成工作所必需的最少权限。

例如一个普通员工只需要查看订单。

那么就只给:

读取权限

不要顺便给:

  • 修改权限
  • 删除权限
  • 管理员权限

因为权限越大,一旦账号被攻击,造成的损失就越大。

所以:

权限不是越多越好,而是够用就行。

考试看到:

“仅授予完成任务所必要的权限”

选择:

最小权限原则

八、权限分离 / 职责分离

再举一个例子。

银行转账 1000 万元,如果一个人同时能:

  1. 创建转账
  2. 审核转账
  3. 批准转账

风险很大。

更安全的设计是:

甲创建 → 乙审核 → 丙批准。

这就是:

职责分离 / 权限分离

核心:

关键操作不能让一个人完全掌控。

这样可以降低:

  • 内部人员作恶
  • 单点人为错误
  • 权限滥用

记忆:

最小权限 = 少给。

职责分离 = 分开给。

第四天

账户、管理员权限、文件权限、进程、内存、漏洞、补丁、端口、服务、日志、病毒、木马、系统加固

一、操作系统安全在保护什么

操作系统处在一个很重要的位置:

硬件 ← 操作系统 ← 应用程序 ← 用户

如果操作系统本身被攻破,那么上面运行的应用和存储的数据都会受到影响。

所以操作系统安全主要要保护:

  • 用户账户
  • 文件和数据
  • 系统进程
  • 内存
  • 系统服务
  • 系统配置
  • 日志

可以先理解成:

操作系统安全 = 权限控制 + 隔离 + 加固 + 更新 + 审计。

二、用户和账户安全

一台电脑可能存在:

  • 普通用户
  • 管理员
  • 系统账户
  • 服务账户

不同账户拥有不同权限。

最重要的原则就是我们 Day 3 学过的:

最小权限原则。

比如一个员工只需要使用浏览器和办公软件,就没必要让他拥有管理员权限。

为什么?

如果这个账号被攻击:

普通权限账号 → 攻击影响有限。

管理员账号 → 可能修改整个系统。

所以考试看到:

“普通用户不应该长期使用管理员权限”

想到:

最小权限原则

管理员账户为什么危险

管理员一般拥有:

  • 安装软件
  • 修改系统配置
  • 创建用户
  • 删除用户
  • 修改权限
  • 启动/停止服务

所以:

管理员权限越高,被攻破后的损失越大。

常见安全措施:

  • 普通工作使用普通账户
  • 管理操作才使用管理员权限
  • 禁用无用账户
  • 设置强密码
  • 限制登录失败次数
  • 定期检查账户

三、文件和目录权限

操作系统必须控制:

谁能访问哪个文件,并且能做什么。

最常见的权限:

  • R = Read,读
  • W = Write,写
  • X = Execute,执行

例如:

某员工只需要看工资表。

那么给:

读权限

而不应该给:

写、删除权限。

这仍然体现:

最小权限原则

文件权限题怎么判断

如果题目说:

用户 A 可以读取文件,但不能修改。

说明用户只有:

读权限

如果:

用户能够运行一个程序文件。

需要:

执行权限

所以记:

R 读,W 写,X 执行。

四、进程是什么

程序运行起来之后,可以理解成一个:

进程

例如:

你打开浏览器。

浏览器程序运行之后,就产生一个或多个进程。

操作系统需要控制不同进程之间不能随意访问彼此的数据。

为什么?

假设:

浏览器进程可以随意读取密码管理器进程的内存。

那就非常危险。

所以操作系统需要:

进程隔离

记忆:

不同进程之间要隔离。

五、内存保护

每个进程运行时,都需要一定的内存空间。

正常情况下:

A 进程不能随意读写 B 进程的内存。

这就是:

内存保护

主要目的是:

  • 防止程序相互破坏
  • 防止越权访问
  • 提高系统稳定性
  • 限制攻击影响

所以考试看到:

“防止一个进程非法访问另一个进程的地址空间”

想到:

内存保护 / 进程隔离

六、漏洞

操作系统也是软件。

只要是软件,就可能存在:

漏洞

漏洞可以理解成:

程序设计、实现或配置中的安全缺陷。

比如某个系统漏洞允许攻击者绕过权限控制。

厂商发现后,就可能发布:

安全补丁

七、补丁管理

安全补丁的主要作用:

修复已经发现的软件安全漏洞。

例如:

系统发现严重漏洞。

厂商发布更新。

管理员应该:

及时安装安全补丁。

所以考试看到:

  • 安全更新
  • 修复已知漏洞
  • Patch
  • 系统更新

优先想到:

补丁管理

一个常见误区

不要认为:

“装了杀毒软件,就不用更新系统。”

这是错误的。

因为:

杀毒软件主要针对恶意代码等威胁。

补丁主要修复软件本身的漏洞。

两个不是一回事。

八、系统安全加固

这是非常重要的一组概念。

什么叫系统加固?

简单来说:

把系统中不必要、不安全的东西关掉或限制掉,降低攻击面。

常见系统加固措施

1. 关闭不需要的服务

比如服务器根本不用某项服务,就不要让它一直运行。

原因:

多运行一个服务,就可能多一个攻击入口。

2. 关闭不必要端口

如果某个端口不需要:

关闭。

因为开放端口往往对应某种网络服务。

3. 删除或禁用无用账户

例如:

  • 测试账户
  • 离职员工账户
  • 默认账户

长期留着可能形成风险。

4. 修改默认配置

比如:

  • 默认密码
  • 默认账户
  • 不安全的系统配置

应该及时修改。

5. 限制权限

普通用户不授予管理员权限。

6. 安装安全补丁

保持系统及时更新。

所以看到:

关闭无用服务 + 删除无用账户 + 修改默认设置

基本可以判断:

系统安全加固

记忆:

不用的关掉,不必要的删掉,需要的限制好。

九、端口和服务是什么关系

这一部分不用深入网络原理。

你先简单理解:

很多网络服务会监听某个:

端口

例如:

Web 服务可能监听某个网络端口。

如果服务不需要,但端口一直开放,就可能增加攻击面。

因此:

不用的服务关闭 → 对应的不必要端口也应关闭。

考试看到:

“减少系统攻击面”

经常对应:

关闭不必要的服务和端口

十、安全日志

操作系统通常会记录:

  • 登录成功
  • 登录失败
  • 用户操作
  • 系统异常
  • 服务启动
  • 权限变化

这些记录称为:

日志

日志非常重要,因为发生安全问题之后可以查:

什么时候、谁、做了什么。

十一、安全审计

Day 2 已经接触过。

再强化一下:

安全审计 = 对系统活动进行记录、检查和追踪。

例如凌晨出现:

1
2
3
4
5
02:01 登录失败
02:01 登录失败
02:01 登录失败
02:02 登录失败
02:02 登录成功

这可能意味着:

有人不断尝试登录。

管理员可以通过日志发现异常。

所以:

日志是重要数据,审计是对这些活动进行检查和分析。

十二、恶意代码

恶意代码就是:

为了执行恶意行为而编写的软件或代码。

考试常考四个词:

  • 病毒
  • 蠕虫
  • 木马
  • 后门

先把它们分清。

十三、计算机病毒

病毒的一个典型特点:

通常需要依附在其他文件或程序上。

它可能感染:

  • 可执行文件
  • 文档
  • 系统文件

运行被感染程序以后,病毒可能继续传播。

记忆:

病毒——依附传播。

十四、蠕虫

蠕虫一个很重要的特点:

可以利用网络主动传播。

通常不需要像传统病毒一样必须依附其他程序。

所以考试看到:

“能够通过网络自行传播”

优先:

蠕虫

记忆:

蠕虫——自己爬网络。

十五、木马

木马:

伪装成正常程序,诱骗用户运行,实际执行恶意功能。

例如看起来像:

“免费游戏.exe”

运行之后却在后台偷取信息。

所以:

木马最重要的关键词:伪装。

记忆:

木马——装好人。

十六、后门

后门:

绕过正常认证或安全检查进入系统的隐藏入口。

例如攻击者控制服务器后留下一个隐藏入口,以后可以再次访问。

记忆:

后门——偷偷留入口。

四个恶意代码放一起

类型最典型特征
病毒依附其他文件/程序
蠕虫网络自主传播
木马伪装欺骗
后门隐藏访问入口

考试记忆:

病毒会附身,蠕虫自己跑,木马会伪装,后门偷偷进。

第五天

数据库账户、权限、审计、备份、加密、SQL 注入、参数化查询

一、数据库安全在保护什么

数据库通常保存系统里最重要的数据,例如用户资料、账号信息、订单、财务数据等。

所以数据库安全主要考虑三件事:

机密性、完整性、可用性

这三个词在信息安全考试里非常重要。

机密性:不该看的人不能看到。

比如普通员工不能读取公司所有人的工资。

完整性:数据不能被未经授权地修改。

比如攻击者不能偷偷把账户余额从 100 元改成 100000 元。

可用性:需要使用数据库的时候能够正常使用。

比如数据库服务器故障后,要尽快恢复业务。

可以记:

机密性 = 不能乱看 完整性 = 不能乱改 可用性 = 不能用不了

二、数据库账户安全

数据库通常有不同账户。

例如:

1
2
3
4
管理员
应用程序账户
普通查询用户
审计人员

这些账户不应该拥有一样的权限。

管理员可能有非常大的权限,而普通用户只应该获得工作所需要的权限。

这就联系到 Day 3 学过的:

最小权限原则

比如网站程序只需要:

1
2
3
SELECT
INSERT
UPDATE

那就没必要额外给它整个数据库的超级管理员权限。

原因很简单:

权限越大,账户失陷后的损失通常越大。

三、数据库常见权限

先认识几个非常常见的 SQL 操作。

操作含义
SELECT查询
INSERT插入数据
UPDATE修改数据
DELETE删除数据

非常好记:

查 SELECT 增 INSERT 改 UPDATE 删 DELETE

假设小王只能查看员工信息。

那么应该只给:

SELECT

而不应该给:

UPDATE、DELETE

这体现的还是:

最小权限原则

四、权限为什么要细分

假设有一个公司财务系统。

普通员工只能:

查看自己的工资。

财务人员可以:

查询和修改工资信息。

数据库管理员可以:

管理账户、权限、数据库结构等。

因此数据库不能简单设计成:

“登录成功以后什么都能干。”

应该根据不同用户的职责控制权限。

考试看到:

“仅允许用户访问完成工作所需要的数据”

第一反应:

最小权限原则。

五、数据库安全审计

数据库每天可能发生大量操作:

1
2
3
4
19:01 用户A登录
19:02 用户A查询订单
19:04 用户B修改账户资料
19:08 管理员删除一条记录

把这些操作记录下来,可以用于:

安全审计

数据库审计主要可以记录:

  • 谁登录了
  • 什么时间登录
  • 查询了什么
  • 修改了什么
  • 删除了什么
  • 登录是否失败
  • 权限是否发生变化

发生安全事件以后,就能回答:

谁,在什么时候,对什么数据,进行了什么操作?

记忆:

数据库审计 = 记录 + 检查 + 追踪。

六、数据库备份

假设数据库硬盘突然损坏。

如果:

没有备份

可能意味着大量数据永久丢失。

如果:

有近期备份

就可以把数据库恢复到某个时间点。

所以:

备份的重要作用之一,就是提高数据的可恢复能力和系统可用性。

考试看到:

“系统故障以后恢复数据”

优先想到:

备份与恢复。

七、常见备份类型

三级阶段先掌握最基本的三个概念。

完全备份

把需要备份的数据:

全部备份一次。

优点:

恢复简单。

缺点:

需要的时间和存储空间通常比较多。

记忆:

完全备份 = 全部复制。

增量备份

只备份:

自上一次备份以来发生变化的数据。

例如:

星期一完全备份。

星期二只保存星期一以后变化的部分。

星期三只保存星期二备份以后变化的部分。

优点:

备份速度快、占用空间较少。

但恢复时可能需要多个备份。

差异备份

只备份:

自最近一次完全备份以后发生变化的数据。

例如:

星期一完全备份。

星期二保存星期一以后的变化。

星期三还是保存:

星期一完全备份以后所有的变化。

所以记住区别:

增量:看上一次备份。

差异:看上一次完全备份。

这两个以后很容易出选择题。

八、数据库恢复

备份不是最终目的。

最终目的是:

发生故障后能够恢复。

因此一个安全系统不仅应该:

做备份

还应该:

验证备份能不能正常恢复。

因为如果备份文件已经损坏,等真正出事以后才发现,就来不及了。

九、数据库中的敏感数据

数据库可能保存:

  • 身份证号
  • 手机号码
  • 银行卡信息
  • 密码相关信息
  • 商业机密

这些内容不能毫无保护地存储。

常见思路:

加密、Hash、访问控制、脱敏。

但不同数据采用的方法不一样。

例如需要以后恢复原文的数据,可以考虑:

加密

而用户登录密码一般不应该简单保存明文密码。

更合理的是保存经过专门密码 Hash 方案处理的结果。

三级考试阶段先记:

敏感数据需要受到加密或其他安全保护。

十、加密和 Hash 再复习一次

Day 1 学过:

加密可以解密恢复原文。

而:

Hash 主要生成单向摘要。

因此:

数据库里的某些敏感信息需要以后读取原文:

→ 加密

验证数据是否发生变化:

→ Hash

不要混淆。

十一、什么是 SQL 注入

SQL 是数据库查询语言。

假设程序接收到用户输入:

1
用户名

然后程序自己拼成一条 SQL:

1
SELECT * FROM users WHERE username = '用户输入';

如果程序:

没有正确区分“用户输入的数据”和“SQL 指令”

攻击者构造的输入就可能改变原来的 SQL 语义。

这就是:

SQL Injection,SQL 注入。

考试最重要的是理解根源:

用户可控输入被直接拼接进 SQL 语句。

十二、SQL 注入的本质

不要把 SQL 注入理解成:

“数据库密码太简单。”

它真正的问题是:

程序把外部输入当成了 SQL 语法的一部分。

可以把它理解成:

原本开发者希望:

1
用户输入 = 数据

结果程序拼接以后变成:

1
用户输入 = SQL 指令的一部分

所以导致漏洞。

一句话:

SQL 注入 = 数据和代码的边界被破坏。

十三、怎么防 SQL 注入

考试中非常重要。

最核心措施:

参数化查询 / 预编译语句

英文经常看到:

Prepared Statement

它的核心思想是:

SQL 结构提前确定,用户输入只作为数据传入。

这样数据库不会轻易把用户输入解释成新的 SQL 指令。

十四、错误方式和正确思路

危险思想:

1
SQL语句 + 用户输入 + SQL语句

也就是:

字符串拼接 SQL

安全得多的思想:

1
2
3
4
5
SQL结构固定
↓
用户输入作为参数
↓
数据库分别处理

也就是:

参数化查询

所以考试遇到:

“防止 SQL 注入最有效/主要的编程措施是什么?”

优先寻找:

参数化查询 / 预编译语句

而不是只选择:

“安装杀毒软件”。

十五、输入检查有没有用

有用。

例如程序可以检查:

  • 数据类型
  • 长度
  • 输入范围
  • 格式

这属于:

输入验证

但是考试一定要分清:

输入验证可以辅助防护。

而从数据库编程角度,防 SQL 注入非常重要的核心措施仍然是:

参数化查询。

十六、权限也能降低 SQL 注入危害

假设一个 Web 程序连接数据库时直接使用:

数据库最高权限管理员账户。

如果应用被利用,危害可能很严重。

如果应用账户只拥有:

工作所需的最小权限

即使出现问题,也可能限制危害范围。

所以 SQL 注入防御可以形成:

参数化查询 + 输入验证 + 最小权限

这三个一起记。

十七、数据库安全一句话总结

把今天全部内容压成一句:

权限要最小,操作要审计,数据要备份,敏感要保护,SQL 不直接拼接。

这句话非常值得背。