只有知识点,题目另外找或者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 9 | Web 安全 | 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 8 | PKI、VPN、安全协议 | 高频考点 |
| Day 9 | Web 安全 | 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
即:
多因素认证
例如:
密码 + 手机 + 指纹
分别属于:
- 知识因素
- 持有因素
- 生物因素
这种认证方式一般比单纯密码安全。
八、口令认证常见风险
密码认证虽然常见,但风险很多:
- 弱密码
- 密码重复使用
- 暴力破解
- 字典攻击
- 密码泄露
- 钓鱼攻击
比如:
| |
这种密码非常容易被猜出来。
常见防护方式包括:
- 提高密码复杂度
- 限制连续登录失败次数
- 定期修改密码
- 使用 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 万元,如果一个人同时能:
- 创建转账
- 审核转账
- 批准转账
风险很大。
更安全的设计是:
甲创建 → 乙审核 → 丙批准。
这就是:
职责分离 / 权限分离
核心:
关键操作不能让一个人完全掌控。
这样可以降低:
- 内部人员作恶
- 单点人为错误
- 权限滥用
记忆:
最小权限 = 少给。
职责分离 = 分开给。
第四天
账户、管理员权限、文件权限、进程、内存、漏洞、补丁、端口、服务、日志、病毒、木马、系统加固
一、操作系统安全在保护什么
操作系统处在一个很重要的位置:
硬件 ← 操作系统 ← 应用程序 ← 用户
如果操作系统本身被攻破,那么上面运行的应用和存储的数据都会受到影响。
所以操作系统安全主要要保护:
- 用户账户
- 文件和数据
- 系统进程
- 内存
- 系统服务
- 系统配置
- 日志
可以先理解成:
操作系统安全 = 权限控制 + 隔离 + 加固 + 更新 + 审计。
二、用户和账户安全
一台电脑可能存在:
- 普通用户
- 管理员
- 系统账户
- 服务账户
不同账户拥有不同权限。
最重要的原则就是我们 Day 3 学过的:
最小权限原则。
比如一个员工只需要使用浏览器和办公软件,就没必要让他拥有管理员权限。
为什么?
如果这个账号被攻击:
普通权限账号 → 攻击影响有限。
管理员账号 → 可能修改整个系统。
所以考试看到:
“普通用户不应该长期使用管理员权限”
想到:
最小权限原则
管理员账户为什么危险
管理员一般拥有:
- 安装软件
- 修改系统配置
- 创建用户
- 删除用户
- 修改权限
- 启动/停止服务
所以:
管理员权限越高,被攻破后的损失越大。
常见安全措施:
- 普通工作使用普通账户
- 管理操作才使用管理员权限
- 禁用无用账户
- 设置强密码
- 限制登录失败次数
- 定期检查账户
三、文件和目录权限
操作系统必须控制:
谁能访问哪个文件,并且能做什么。
最常见的权限:
- R = Read,读
- W = Write,写
- X = Execute,执行
例如:
某员工只需要看工资表。
那么给:
读权限
而不应该给:
写、删除权限。
这仍然体现:
最小权限原则
文件权限题怎么判断
如果题目说:
用户 A 可以读取文件,但不能修改。
说明用户只有:
读权限
如果:
用户能够运行一个程序文件。
需要:
执行权限
所以记:
R 读,W 写,X 执行。
四、进程是什么
程序运行起来之后,可以理解成一个:
进程
例如:
你打开浏览器。
浏览器程序运行之后,就产生一个或多个进程。
操作系统需要控制不同进程之间不能随意访问彼此的数据。
为什么?
假设:
浏览器进程可以随意读取密码管理器进程的内存。
那就非常危险。
所以操作系统需要:
进程隔离
记忆:
不同进程之间要隔离。
五、内存保护
每个进程运行时,都需要一定的内存空间。
正常情况下:
A 进程不能随意读写 B 进程的内存。
这就是:
内存保护
主要目的是:
- 防止程序相互破坏
- 防止越权访问
- 提高系统稳定性
- 限制攻击影响
所以考试看到:
“防止一个进程非法访问另一个进程的地址空间”
想到:
内存保护 / 进程隔离
六、漏洞
操作系统也是软件。
只要是软件,就可能存在:
漏洞
漏洞可以理解成:
程序设计、实现或配置中的安全缺陷。
比如某个系统漏洞允许攻击者绕过权限控制。
厂商发现后,就可能发布:
安全补丁
七、补丁管理
安全补丁的主要作用:
修复已经发现的软件安全漏洞。
例如:
系统发现严重漏洞。
厂商发布更新。
管理员应该:
及时安装安全补丁。
所以考试看到:
- 安全更新
- 修复已知漏洞
- Patch
- 系统更新
优先想到:
补丁管理
一个常见误区
不要认为:
“装了杀毒软件,就不用更新系统。”
这是错误的。
因为:
杀毒软件主要针对恶意代码等威胁。
补丁主要修复软件本身的漏洞。
两个不是一回事。
八、系统安全加固
这是非常重要的一组概念。
什么叫系统加固?
简单来说:
把系统中不必要、不安全的东西关掉或限制掉,降低攻击面。
常见系统加固措施
1. 关闭不需要的服务
比如服务器根本不用某项服务,就不要让它一直运行。
原因:
多运行一个服务,就可能多一个攻击入口。
2. 关闭不必要端口
如果某个端口不需要:
关闭。
因为开放端口往往对应某种网络服务。
3. 删除或禁用无用账户
例如:
- 测试账户
- 离职员工账户
- 默认账户
长期留着可能形成风险。
4. 修改默认配置
比如:
- 默认密码
- 默认账户
- 不安全的系统配置
应该及时修改。
5. 限制权限
普通用户不授予管理员权限。
6. 安装安全补丁
保持系统及时更新。
所以看到:
关闭无用服务 + 删除无用账户 + 修改默认设置
基本可以判断:
系统安全加固
记忆:
不用的关掉,不必要的删掉,需要的限制好。
九、端口和服务是什么关系
这一部分不用深入网络原理。
你先简单理解:
很多网络服务会监听某个:
端口
例如:
Web 服务可能监听某个网络端口。
如果服务不需要,但端口一直开放,就可能增加攻击面。
因此:
不用的服务关闭 → 对应的不必要端口也应关闭。
考试看到:
“减少系统攻击面”
经常对应:
关闭不必要的服务和端口
十、安全日志
操作系统通常会记录:
- 登录成功
- 登录失败
- 用户操作
- 系统异常
- 服务启动
- 权限变化
这些记录称为:
日志
日志非常重要,因为发生安全问题之后可以查:
什么时候、谁、做了什么。
十一、安全审计
Day 2 已经接触过。
再强化一下:
安全审计 = 对系统活动进行记录、检查和追踪。
例如凌晨出现:
| |
这可能意味着:
有人不断尝试登录。
管理员可以通过日志发现异常。
所以:
日志是重要数据,审计是对这些活动进行检查和分析。
十二、恶意代码
恶意代码就是:
为了执行恶意行为而编写的软件或代码。
考试常考四个词:
- 病毒
- 蠕虫
- 木马
- 后门
先把它们分清。
十三、计算机病毒
病毒的一个典型特点:
通常需要依附在其他文件或程序上。
它可能感染:
- 可执行文件
- 文档
- 系统文件
运行被感染程序以后,病毒可能继续传播。
记忆:
病毒——依附传播。
十四、蠕虫
蠕虫一个很重要的特点:
可以利用网络主动传播。
通常不需要像传统病毒一样必须依附其他程序。
所以考试看到:
“能够通过网络自行传播”
优先:
蠕虫
记忆:
蠕虫——自己爬网络。
十五、木马
木马:
伪装成正常程序,诱骗用户运行,实际执行恶意功能。
例如看起来像:
“免费游戏.exe”
运行之后却在后台偷取信息。
所以:
木马最重要的关键词:伪装。
记忆:
木马——装好人。
十六、后门
后门:
绕过正常认证或安全检查进入系统的隐藏入口。
例如攻击者控制服务器后留下一个隐藏入口,以后可以再次访问。
记忆:
后门——偷偷留入口。
四个恶意代码放一起
| 类型 | 最典型特征 |
|---|---|
| 病毒 | 依附其他文件/程序 |
| 蠕虫 | 网络自主传播 |
| 木马 | 伪装欺骗 |
| 后门 | 隐藏访问入口 |
考试记忆:
病毒会附身,蠕虫自己跑,木马会伪装,后门偷偷进。
第五天
数据库账户、权限、审计、备份、加密、SQL 注入、参数化查询
一、数据库安全在保护什么
数据库通常保存系统里最重要的数据,例如用户资料、账号信息、订单、财务数据等。
所以数据库安全主要考虑三件事:
机密性、完整性、可用性
这三个词在信息安全考试里非常重要。
机密性:不该看的人不能看到。
比如普通员工不能读取公司所有人的工资。
完整性:数据不能被未经授权地修改。
比如攻击者不能偷偷把账户余额从 100 元改成 100000 元。
可用性:需要使用数据库的时候能够正常使用。
比如数据库服务器故障后,要尽快恢复业务。
可以记:
机密性 = 不能乱看 完整性 = 不能乱改 可用性 = 不能用不了
二、数据库账户安全
数据库通常有不同账户。
例如:
| |
这些账户不应该拥有一样的权限。
管理员可能有非常大的权限,而普通用户只应该获得工作所需要的权限。
这就联系到 Day 3 学过的:
最小权限原则
比如网站程序只需要:
| |
那就没必要额外给它整个数据库的超级管理员权限。
原因很简单:
权限越大,账户失陷后的损失通常越大。
三、数据库常见权限
先认识几个非常常见的 SQL 操作。
| 操作 | 含义 |
|---|---|
| SELECT | 查询 |
| INSERT | 插入数据 |
| UPDATE | 修改数据 |
| DELETE | 删除数据 |
非常好记:
查 SELECT 增 INSERT 改 UPDATE 删 DELETE
假设小王只能查看员工信息。
那么应该只给:
SELECT
而不应该给:
UPDATE、DELETE
这体现的还是:
最小权限原则
四、权限为什么要细分
假设有一个公司财务系统。
普通员工只能:
查看自己的工资。
财务人员可以:
查询和修改工资信息。
数据库管理员可以:
管理账户、权限、数据库结构等。
因此数据库不能简单设计成:
“登录成功以后什么都能干。”
应该根据不同用户的职责控制权限。
考试看到:
“仅允许用户访问完成工作所需要的数据”
第一反应:
最小权限原则。
五、数据库安全审计
数据库每天可能发生大量操作:
| |
把这些操作记录下来,可以用于:
安全审计
数据库审计主要可以记录:
- 谁登录了
- 什么时间登录
- 查询了什么
- 修改了什么
- 删除了什么
- 登录是否失败
- 权限是否发生变化
发生安全事件以后,就能回答:
谁,在什么时候,对什么数据,进行了什么操作?
记忆:
数据库审计 = 记录 + 检查 + 追踪。
六、数据库备份
假设数据库硬盘突然损坏。
如果:
没有备份
可能意味着大量数据永久丢失。
如果:
有近期备份
就可以把数据库恢复到某个时间点。
所以:
备份的重要作用之一,就是提高数据的可恢复能力和系统可用性。
考试看到:
“系统故障以后恢复数据”
优先想到:
备份与恢复。
七、常见备份类型
三级阶段先掌握最基本的三个概念。
完全备份
把需要备份的数据:
全部备份一次。
优点:
恢复简单。
缺点:
需要的时间和存储空间通常比较多。
记忆:
完全备份 = 全部复制。
增量备份
只备份:
自上一次备份以来发生变化的数据。
例如:
星期一完全备份。
星期二只保存星期一以后变化的部分。
星期三只保存星期二备份以后变化的部分。
优点:
备份速度快、占用空间较少。
但恢复时可能需要多个备份。
差异备份
只备份:
自最近一次完全备份以后发生变化的数据。
例如:
星期一完全备份。
星期二保存星期一以后的变化。
星期三还是保存:
星期一完全备份以后所有的变化。
所以记住区别:
增量:看上一次备份。
差异:看上一次完全备份。
这两个以后很容易出选择题。
八、数据库恢复
备份不是最终目的。
最终目的是:
发生故障后能够恢复。
因此一个安全系统不仅应该:
做备份
还应该:
验证备份能不能正常恢复。
因为如果备份文件已经损坏,等真正出事以后才发现,就来不及了。
九、数据库中的敏感数据
数据库可能保存:
- 身份证号
- 手机号码
- 银行卡信息
- 密码相关信息
- 商业机密
这些内容不能毫无保护地存储。
常见思路:
加密、Hash、访问控制、脱敏。
但不同数据采用的方法不一样。
例如需要以后恢复原文的数据,可以考虑:
加密
而用户登录密码一般不应该简单保存明文密码。
更合理的是保存经过专门密码 Hash 方案处理的结果。
三级考试阶段先记:
敏感数据需要受到加密或其他安全保护。
十、加密和 Hash 再复习一次
Day 1 学过:
加密可以解密恢复原文。
而:
Hash 主要生成单向摘要。
因此:
数据库里的某些敏感信息需要以后读取原文:
→ 加密
验证数据是否发生变化:
→ Hash
不要混淆。
十一、什么是 SQL 注入
SQL 是数据库查询语言。
假设程序接收到用户输入:
| |
然后程序自己拼成一条 SQL:
| |
如果程序:
没有正确区分“用户输入的数据”和“SQL 指令”
攻击者构造的输入就可能改变原来的 SQL 语义。
这就是:
SQL Injection,SQL 注入。
考试最重要的是理解根源:
用户可控输入被直接拼接进 SQL 语句。
十二、SQL 注入的本质
不要把 SQL 注入理解成:
“数据库密码太简单。”
它真正的问题是:
程序把外部输入当成了 SQL 语法的一部分。
可以把它理解成:
原本开发者希望:
| |
结果程序拼接以后变成:
| |
所以导致漏洞。
一句话:
SQL 注入 = 数据和代码的边界被破坏。
十三、怎么防 SQL 注入
考试中非常重要。
最核心措施:
参数化查询 / 预编译语句
英文经常看到:
Prepared Statement
它的核心思想是:
SQL 结构提前确定,用户输入只作为数据传入。
这样数据库不会轻易把用户输入解释成新的 SQL 指令。
十四、错误方式和正确思路
危险思想:
| |
也就是:
字符串拼接 SQL
安全得多的思想:
| |
也就是:
参数化查询
所以考试遇到:
“防止 SQL 注入最有效/主要的编程措施是什么?”
优先寻找:
参数化查询 / 预编译语句
而不是只选择:
“安装杀毒软件”。
十五、输入检查有没有用
有用。
例如程序可以检查:
- 数据类型
- 长度
- 输入范围
- 格式
这属于:
输入验证
但是考试一定要分清:
输入验证可以辅助防护。
而从数据库编程角度,防 SQL 注入非常重要的核心措施仍然是:
参数化查询。
十六、权限也能降低 SQL 注入危害
假设一个 Web 程序连接数据库时直接使用:
数据库最高权限管理员账户。
如果应用被利用,危害可能很严重。
如果应用账户只拥有:
工作所需的最小权限
即使出现问题,也可能限制危害范围。
所以 SQL 注入防御可以形成:
参数化查询 + 输入验证 + 最小权限
这三个一起记。
十七、数据库安全一句话总结
把今天全部内容压成一句:
权限要最小,操作要审计,数据要备份,敏感要保护,SQL 不直接拼接。
这句话非常值得背。