{ "topic": "web-security", "type": "short_answer", "schema_version": "1.0.0", "generated": "2026-09-17T00:00:00+08:00", "questions": [ { "id": "sa-001", "type": "short_answer", "difficulty": 2, "tags": [ "web安全", "xss" ], "question": "请简述 XSS 攻击的三种主要类型(存储型、反射型、DOM 型),并分别说明其攻击流程和典型场景。", "answer": "1. 存储型 XSS(持久型):攻击者将恶意脚本提交并存储到服务器端(如论坛帖子、评论区),当其他用户访问包含该内容的页面时,恶意脚本从服务器返回并在浏览器中执行。典型场景:论坛评论、用户资料、站内消息。\n\n2. 反射型 XSS(非持久型):攻击者构造包含恶意脚本的 URL,诱导用户点击后,服务器将恶意脚本作为参数值「反射」回 HTML 响应中执行。典型场景:搜索结果页显示搜索关键词、错误消息显示用户输入。\n\n3. DOM 型 XSS:攻击者构造的 URL 中包含恶意数据,前端 JavaScript 直接从 URL(如 location.hash、document.referrer)读取数据并写入 DOM(如 innerHTML),不经过服务器处理。典型场景:单页应用(SPA)、前端路由处理。", "source": null, "related": [], "keywords": [ "存储型", "反射型", "DOM型", "恶意脚本", "服务器存储", "URL参数", "DOM操作", "innerHTML", "浏览器执行" ], "scoring_rubric": "满分标准:正确列出三种类型(各1分),每种类型需说明攻击流程(各2分)和至少一个典型场景(各1分)。总分9分。若仅列出类型名称但无流程和场景,最高得3分。", "explanation": "" }, { "id": "sa-002", "type": "short_answer", "difficulty": 2, "tags": [ "web安全", "sql注入", "csrf" ], "question": "对比 SQL 注入和 CSRF 两种攻击方式,从攻击目标、利用条件和防御策略三个方面进行分析。", "answer": "攻击目标:\n- SQL 注入:针对后端数据库,通过篡改 SQL 查询语义来窃取、修改或删除数据库数据,甚至执行系统命令。\n- CSRF:针对已认证用户的会话,利用浏览器自动携带凭据的特性,以用户身份执行非预期的操作(如转账、改密码)。\n\n利用条件:\n- SQL 注入:需要应用程序存在将用户输入直接拼接至 SQL 语句的代码缺陷,攻击者构造恶意输入即可触发,不需要用户登录。\n- CSRF:需要用户已登录目标站点且浏览器保存了有效的会话凭证,同时目标站点的状态更改请求缺少有效的来源验证。\n\n防御策略:\n- SQL 注入:使用参数化查询/预编译语句、输入验证与过滤、最小权限原则、使用 ORM 框架。\n- CSRF:使用 CSRF Token 验证、SameSite Cookie 属性、验证 Referer/Origin 头、关键操作要求二次确认。", "source": null, "related": [], "keywords": [ "SQL注入", "CSRF", "数据库", "会话", "参数化查询", "CSRF Token", "SameSite", "输入验证", "拼接", "自动携带Cookie" ], "scoring_rubric": "满分标准:三个维度(攻击目标、利用条件、防御策略)各占3分,每个维度中两种攻击的对比各1.5分。回答需体现关键差异,表述准确完整。总分9分。仅对比一个维度或泛泛而谈,酌情扣分。", "explanation": "" }, { "id": "sa-003", "type": "short_answer", "difficulty": 2, "tags": [ "web安全", "文件上传", "ssrf" ], "question": "请分别描述防御文件上传漏洞和 SSRF 漏洞的最佳实践(至少各列出三点)。", "answer": "文件上传防御最佳实践:\n1. 服务端验证文件类型:检查文件扩展名白名单、MIME 类型和文件头签名(Magic Number),不依赖前端验证。\n2. 重命名上传文件:使用随机名称(如 UUID)替换原始文件名,避免路径遍历和文件名解析漏洞。\n3. 隔离存储:将上传文件存储在 Web 根目录之外,或使用独立的文件存储服务(如对象存储)。\n4. 禁用执行权限:确保上传目录不可执行脚本。\n5. 限制文件大小:防止 DoS 攻击。\n\nSSRF 防御最佳实践:\n1. URL 白名单:只允许访问预定义的可信域名和 IP 范围。\n2. 协议限制:只允许 http:// 和 https:// 协议,禁止 file://、gopher://、dict:// 等危险协议。\n3. IP 地址校验:解析域名为 IP 后检查是否为内网地址(127.0.0.0/8、10.0.0.0/8、172.16.0.0/12、169.254.0.0/16 等),防止 DNS 重绑定。\n4. 响应处理:限制响应大小和类型,避免将完整响应返回给客户端。\n5. 禁用不必要的 URL 重定向跟随。", "source": null, "related": [], "keywords": [ "文件类型验证", "白名单", "重命名", "UUID", "隔离存储", "执行权限", "Magic Number", "协议限制", "内网地址", "DNS重绑定", "URL白名单", "IP校验" ], "scoring_rubric": "满分标准:文件上传防御列出至少3点(每点1.5分,共4.5分),SSRF防御列出至少3点(每点1.5分,共4.5分)。每点需表述清楚且正确。总分9分。少于3点或表述错误酌情扣分。", "explanation": "" } ] }