全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 20 道配套习题

安全与数据保护专题

专题说明

本专题深入讲解GORM中的安全与数据保护机制,涵盖SQL注入防护、敏感数据加密存储、数据脱敏、审计日志等企业级安全实践,帮助开发者构建安全可靠的数据库应用。

学习目标

  1. 掌握GORM防止SQL注入的机制与最佳实践
  2. 学会使用bcrypt等算法进行敏感数据加密存储
  3. 理解数据脱敏、审计日志等高级安全特性的实现方式

学习内容

本专题涵盖以下知识点:

  • SQL注入防护机制与参数绑定
  • 敏感数据加密存储(bcrypt、AES等)
  • 数据脱敏与隐私保护
  • 审计日志与操作追踪
  • 数据库访问权限控制

学习建议

  1. 先理解SQL注入原理,再学习GORM的防护机制
  2. 重点掌握bcrypt密码哈希的实际应用
  3. 结合实际项目场景,思考数据保护策略

📝 配套习题(20 题)

💡 参考答案在文末
单选题
1

在 GORM 中,以下哪种方式最能有效防止 SQL 注入攻击?

A

使用字符串拼接构建查询条件

B

使用 Raw SQL 直接执行用户输入

C

使用 GORM 的 Where 方法配合占位符参数(?)

D

对用户输入进行 HTML 转义

2

在 GORM 中,以下哪种方式最能有效防止 SQL 注入攻击?

A

使用字符串拼接构建查询条件

B

使用 Raw SQL 直接执行用户输入

C

使用 GORM 的 Where 方法配合占位符参数(?)

D

对用户输入进行 HTML 转义

3

在 GORM 中,以下哪种方式最能有效防止 SQL 注入攻击?

A

字符串拼接 SQL 语句

B

使用 Raw 方法直接执行 SQL

C

使用 Where 方法的占位符(?)和参数绑定

D

对用户输入做 HTML 转义

4

在 GORM 中实现敏感数据(如密码)存储时,最佳实践是什么?

A

使用 Base64 编码后存储

B

使用 MD5 哈希后存储

C

使用 bcrypt 等安全哈希算法

D

明文存储,传输时加密

5

在 GORM 中实现敏感数据(如密码)存储时,最佳实践是什么?

A

使用 Base64 编码后存储

B

使用 MD5 哈希后存储

C

使用 bcrypt 等安全哈希算法

D

明文存储,传输时加密

6

在 GORM 中实现敏感数据(如密码)存储时,最佳实践是什么?

A

使用 Base64 编码

B

使用 MD5 哈希

C

使用 bcrypt 哈希

D

明文存储

7

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

8

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

9

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

BeforeCreate 回调

B

AfterFind 回调

C

使用数据库视图

D

BeforeSave 回调

10

关于 GORM 的 权限与审计日志,以下说法正确的是?

A

权限与审计日志 是 GORM 的核心功能之一

B

权限与审计日志 只能在特定数据库中使用

C

权限与审计日志 需要手动配置才能启用

D

权限与审计日志 已被 GORM v2 废弃

11

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

12

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

13

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

BeforeCreate 回调

B

AfterFind 回调

C

使用数据库视图

D

BeforeSave 回调

14

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

BeforeCreate 回调

B

AfterFind 回调

C

使用数据库视图

D

BeforeSave 回调

15

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

16

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

17

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

18

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

19

在 GORM 中实现数据脱敏时,如果需要对脱敏操作进行审计追踪,推荐的做法是什么?

A

在 AfterFind 回调中记录脱敏日志,同时在审计表中写入访问记录

B

直接使用数据库触发器记录所有查询

C

关闭日志输出避免泄露敏感信息

D

在 BeforeFind 回调中提前过滤敏感数据

20

在 GORM 中实现数据脱敏(如手机号中间四位显示为****),应该在哪个时机处理?

A

在 BeforeCreate 回调中处理

B

在 AfterFind 回调中处理

C

在数据库层面使用视图

D

在 BeforeSave 回调中处理

参考答案
1.C 2.C 3.C 4.C 5.C 6.C 7.B 8.B 9.B 10.A 11.B 12.B 13.B 14.B 15.B 16.B 17.B 18.B 19.A 20.B
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 分库分表与多租户专题
下一个专题 → 性能优化与调优专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码