feat: add cybersecurity topic with 6 subtopics (204 questions)
Deploy Examination / deploy (push) Successful in 7s

New topic group: 网络安全专题 (cybersecurity)
Subtopics:
- web-security: Web 安全基础 (34 questions)
- crypto-basics: 密码学基础 (34 questions)
- buffer-overflow: 缓冲区溢出与漏洞利用 (34 questions)
- os-security: 操作系统安全 (34 questions)
- network-attack: 网络攻防 (34 questions)
- secure-coding: 安全编程实践 (34 questions)

Question types per subtopic:
- single_choice × 20
- true_false × 10
- short_answer × 3
- code_reading × 1

Difficulty range: 1-3 (基础)
This commit is contained in:
2026-09-17 13:33:04 +08:00
parent da9667c265
commit 70e368e235
31 changed files with 4516 additions and 1 deletions
@@ -0,0 +1,148 @@
{
"topic": "web-security",
"type": "true_false",
"schema_version": "1.0.0",
"generated": "2026-09-17T00:00:00+08:00",
"questions": [
{
"id": "tf-001",
"type": "true_false",
"difficulty": 1,
"tags": [
"web安全",
"xss"
],
"question": "XSS 攻击的目标是窃取或篡改客户端(浏览器端)的数据,而不是直接攻击服务器。",
"answer": true,
"explanation": "正确。XSS 攻击的主要目标是在受害者的浏览器中执行恶意脚本,从而窃取 Cookie、会话令牌、篡改页面内容或进行钓鱼等操作。它是一种客户端攻击,虽然恶意脚本可能存储在服务器上(存储型),但攻击效果发生在用户浏览器端。",
"source": null,
"related": []
},
{
"id": "tf-002",
"type": "true_false",
"difficulty": 1,
"tags": [
"web安全",
"sql注入"
],
"question": "使用了 HTTPS 加密传输的 Web 应用不会受到 SQL 注入攻击。",
"answer": false,
"explanation": "错误。HTTPS 只负责加密客户端与服务器之间的通信传输过程,防止数据在传输中被窃听或篡改。但 SQL 注入发生在服务端应用层——恶意输入通过 HTTPS 传输后仍然会被拼接到 SQL 查询中。加密传输与应用层输入验证是两个不同层面的安全问题。",
"source": null,
"related": []
},
{
"id": "tf-003",
"type": "true_false",
"difficulty": 2,
"tags": [
"web安全",
"csrf"
],
"question": "CSRF 攻击中,攻击者需要窃取用户的 Cookie 才能完成攻击。",
"answer": false,
"explanation": "错误。CSRF 攻击的关键在于浏览器会在请求中自动携带目标站点的 Cookie,攻击者无需窃取或知道 Cookie 的具体内容。攻击者只需诱导用户访问恶意页面或点击恶意链接,浏览器会自动在请求中附带目标站点的有效 Cookie,从而使请求被服务器认为是合法的。",
"source": null,
"related": []
},
{
"id": "tf-004",
"type": "true_false",
"difficulty": 2,
"tags": [
"web安全",
"ssrf"
],
"question": "SSRF 漏洞只能用于访问内网资源,无法对外网发起请求。",
"answer": false,
"explanation": "错误。SSRF 不仅可以让服务器访问内网资源(如内网数据库、管理后台),也可以对外网发起请求。攻击者可以利用 SSRF 进行端口扫描、访问外部 API、探测云服务元数据等。SSRF 的「伪造请求」特性意味着它可以访问服务器能够触及的任何网络地址。",
"source": null,
"related": []
},
{
"id": "tf-005",
"type": "true_false",
"difficulty": 1,
"tags": [
"web安全",
"文件上传"
],
"question": "在文件上传功能中,仅将上传目录的文件执行权限禁用,就可以完全防止文件上传漏洞。",
"answer": false,
"explanation": "错误。禁用上传目录的执行权限是一种有效的缓解措施,但不能「完全防止」文件上传漏洞。在某些配置下(如 Nginx 的 misconfiguration、解析漏洞、或配合本地文件包含 LFI 漏洞),攻击者仍可能利用上传的文件。安全防御应采用多层策略:验证文件类型、重命名文件、限制大小、扫描恶意内容、设置正确的目录权限等。",
"source": null,
"related": []
},
{
"id": "tf-006",
"type": "true_false",
"difficulty": 2,
"tags": [
"web安全",
"xss"
],
"question": "HttpOnly 标志的 Cookie 无法被 JavaScript 的 document.cookie 读取,因此可以完全防止 XSS 攻击。",
"answer": false,
"explanation": "错误。HttpOnly 标志确实可以防止 JavaScript 读取 Cookie,从而保护会话令牌不被 XSS 窃取。但 XSS 的危害远不止窃取 Cookie——攻击者仍可以通过注入脚本来篡改页面内容、进行钓鱼攻击、记录键盘输入、发起 CSRF 请求等。HttpOnly 只是减轻了 XSS 的一种具体危害,而非防止 XSS 攻击本身。",
"source": null,
"related": []
},
{
"id": "tf-007",
"type": "true_false",
"difficulty": 1,
"tags": [
"web安全",
"sql注入"
],
"question": "参数化查询(Prepared Statements)通过将 SQL 结构与数据分离来防止 SQL 注入。",
"answer": true,
"explanation": "正确。参数化查询的核心机制是先定义 SQL 语句的结构(使用占位符),然后单独传递参数值。数据库引擎会将参数值严格作为数据处理,不会将其解释为 SQL 命令的一部分,从而从根本上杜绝了通过输入改变 SQL 语义的可能性。",
"source": null,
"related": []
},
{
"id": "tf-008",
"type": "true_false",
"difficulty": 2,
"tags": [
"web安全",
"csrf"
],
"question": "GET 请求不会受到 CSRF 攻击,只有 POST 请求才需要 CSRF 防护。",
"answer": false,
"explanation": "错误。GET 请求同样可能受到 CSRF 攻击。如果应用程序使用 GET 请求执行状态更改操作(如 `GET /delete?id=1`),攻击者可以通过 img 标签、链接等方式诱导浏览器发起 GET 请求。正确的做法是:所有状态更改操作应使用 POST/PUT/DELETE 等方法,并对所有修改数据的请求实施 CSRF 防护。",
"source": null,
"related": []
},
{
"id": "tf-009",
"type": "true_false",
"difficulty": 2,
"tags": [
"web安全",
"ssrf"
],
"question": "对用户输入的 URL 进行黑名单过滤(如禁止 127.0.0.1)是防御 SSRF 的最可靠方法。",
"answer": false,
"explanation": "错误。黑名单过滤很容易被绕过。攻击者可以使用:①十进制/十六进制/八进制 IP 表示(如 2130706433、0x7f000001);②DNS 重绑定技术;③IPv6 地址(::1);④域名指向内网地址(如 nip.io);⑤URL 编码和重定向等方式绕过。白名单 + 解析后 IP 校验才是更可靠的方案。",
"source": null,
"related": []
},
{
"id": "tf-010",
"type": "true_false",
"difficulty": 1,
"tags": [
"web安全",
"文件上传"
],
"question": "将上传的文件重命名为随机字符串(如 UUID)可以有效防止攻击者通过猜测文件名来访问上传的恶意文件。",
"answer": true,
"explanation": "正确。将上传文件重命名为随机且不可预测的名称(如 UUID),攻击者无法猜测文件路径来直接访问和执行上传的恶意脚本。这是文件上传安全防御的一个重要措施,但通常需要配合其他策略(如类型验证、存储位置隔离等)一起使用。",
"source": null,
"related": []
}
]
}