
“拿到的安全工程师笔试JD十有八九会有Web安全、加密算法、系统运维这几大块。”这是我当年准备校招时一个师兄说的原话。这几年我参与过几次校招出题和面试评审再回头看京东2018秋招安全工程师这套笔试题发现它的出题思路其实很有代表性不追求偏题怪题反而把大量基础原理放进真实业务场景里考察你是否真正理解安全攻防的本质。对于正在准备安全岗位面试的朋友来说这套题非常值得复盘。这篇文章会把这类笔试背后的考点一一拆开讲清楚每类题目在考什么、应该怎么答、容易踩哪些坑也会结合我实际做安全测试和代码审计的经验补充分享。无论你是准备校招、转岗还是单纯想检验自己的安全基础都可以拿这篇文章当一份复习路线图。1. 笔试题的整体画像考点分布与出题逻辑1.1 为什么大厂安全笔试偏爱“基础原理”很多人以为安全工程师的笔试题会直接让写exp、打CTF但实际大厂校招笔试更偏向“原理场景”的混合题型。京东2018秋招安全工程师笔试题就是一个典型样本它考察的核心是“你知不知道漏洞为什么存在”而不是“你背过多少payload”。原因在于校招候选人往往没有太多实战经历面试官需要通过笔试筛选出基础扎实、有安全思维的人。基础原理一旦理解透彻换到任何业务场景都能快速迁移。反过来如果只知道工具用法不知道漏洞成因遇到真实业务中的变种一下子就蒙了。所以这套笔试题的定位很明显用一个个基础问题去判断候选人后续能不能在真实业务里做漏洞发现、风险评估和应急响应。这也解释了为什么题目里会出现大量“为什么”“如何防护”“请说明原理”类型的问答题而不是纯选择判断题。1.2 典型的知识模块与题型比例从公开讨论的题目信息来看京东2018秋招安全工程师笔试题大致覆盖了Web安全、密码学、操作系统安全、渗透测试思路、安全开发与业务安全几个方向。下面这个表格是我根据类似大厂安全笔试做的权重梳理可以当作复习优先级的参考知识模块典型考点考察深度建议优先级Web安全SQL注入、XSS、CSRF、SSRF、文件上传原理利用防御高密码学对称/非对称加密、哈希、数字签名、SSL/TLS原理应用场景高操作系统安全Linux权限、Windows安全、日志分析命令排查思路中渗透测试基础信息收集、漏洞利用、权限提升、内网横向思路工具链高安全开发与审计SDL流程、常见高危函数、代码审计原理代码阅读中业务安全与风控验证码、反爬、账号安全、隐私合规场景对抗思路中这套知识结构多年来没有太大变化。哪怕到了AI安全、云原生安全被频繁提及的今天大厂安全笔试依然会先考Web基础和密码学。原因很简单大部分业务安全问题的根因最后都会落到这几个基础领域上。1.3 出题人真正想看到的答案笔试不是看你会不会背结论而是看你会不会“推导”。比如题目问“SQL注入如何防御”只回答“用预编译”只能拿基础分更好的答案是先说明注入产生的根本原因是数据与代码未分离然后补一句“预编译之所以有效是因为它把SQL结构固定用户输入只能作为参数传递不能改变语句语义”最后再补充“但预编译并非万能存储过程、动态查询、order by等场景仍需白名单校验”。这个答题思路很关键原理一句话、机制一句话、边界条件一句话。大厂安全笔试的参考答案普遍希望看到这种分层表达。所以我在下面拆解各个考点时也会刻意按“成因、利用、防御、边界”四个维度来讲这就是应对这类笔试题最有效的复习框架。2. Web安全核心题目详解漏洞成因与绕过思路2.1 SQL注入不只考“单引号报错”SQL注入是安全笔试的必考题。京东这套笔试题里SQL注入相关的题目通常会围绕“注入点判断、注入类型、绕过技巧、防御方案”几个角度展开。如果只记得“输入单引号看是否报错”遇到参数被WAF拦截或输入被转义的场景就完全不知道怎么办。我建议按四条主线来复习SQL注入注入点判断先加单引号观察页面变化再用逻辑表达式and 11 / and 12确认布尔差异最后用时间盲注函数确认存在。笔试里常见的错误是跳过第二步直接上sqlmap这会让考官觉得你缺乏手工判断能力。注入类型区分数字型、字符型、搜索型对应的闭合方式不同。字符型要考虑单引号、双引号、括号的闭合这类题在笔试里经常以“补全payload中的闭合字符”的形式出现。绕过思路大小写混合、内联注释、等价函数替换、编码绕过等。但你要清楚这些绕过本质上是针对特定WAF规则的不是通用的答题时最好说明“先探测规则再选择绕过方式”。防御方案参数化查询是第一选择其次是输入校验和最小权限数据库账号。这里容易漏掉一个点即使使用参数化查询如果SQL语句本身由字符串拼接而成比如动态表名注入风险依然存在。实际工作中我见过不少因为过度依赖WAF而忽略参数化查询的案例。防御一定是从代码层解决根因WAF只是无奈之下的补充这个优先级判断在笔试和面试里都很加分。2.2 XSS与CSRF前端攻击的两种不同信任模型XSS跨站脚本和CSRF跨站请求伪造经常被放在一起考但它们其实建立在完全不同的信任模型上。XSS利用的是“用户对当前网站的信任”CSRF利用的是“网站对用户浏览器Cookie的信任”。笔试中XSS的考点通常包括反射型、存储型、DOM型的区别。重点要能说清楚反射型不持久化、需要诱导点击存储型持久化、危害更大DOM型纯前端触发服务端可能完全无感知。常见输出位置的绕过HTML标签内、属性内、JavaScript代码内、CSS内。不同位置的编码和解码顺序不同payload也不同。这是一个很关键的考察点很多人只知道“在输入框弹出alert”却不知道换个输出位置原有payload就失效了。修复方式输出编码、输入校验、CSP内容安全策略。CSP是一个常被忽略的高分答案因为它能限制脚本来源即使XSS注入成功也无法加载外部恶意脚本。CSRF的考点则集中在为什么Cookie会自动携带因为浏览器对同源请求会自动带上Cookie攻击者利用这一点构造恶意页面诱使用户发起请求。防护手段的本质CSRF Token之所以有效是因为攻击者无法读取受害者页面上的Token值。SameSite Cookie属性则是从浏览器层面限制跨站请求携带Cookie。与XSS的联动XSS可以窃取Token或直接代替用户发起请求所以CSRF防御在XSS面前经常失效。答题时能点出这个联动关系会显得你对攻击链理解更深。复习CSRF时有个很容易踩的误区以为只要判断了Referer就万无一失。实际上Referer可能因为隐私策略不发送也可能被某些漏洞绕过。一定不要把某种防护手段当成绝对安全这是安全从业者必须养成的思维习惯。2.3 SSRF、文件上传与命令执行高危漏洞的“组合拳”除SQL注入和XSS之外Web安全模块的第三个重点是一组高危漏洞SSRF、文件上传、命令执行。京东这套笔试题里它们经常以综合题形式出现要求你分析攻击路径。SSRF服务端请求伪造这几年在笔试中占比越来越高尤其是云原生环境普及后SSRF可能打通内网元数据服务。核心考点有三个Gopher协议扩展攻击面、内网IP与DNS重绑定绕过、以及如何通过限制协议和IP来修复。笔试答题时如果你能补充“SSRF拿到云元数据后可以进一步获取临时密钥”这条链说明你对现代云环境下的攻击有概念。文件上传的考点核心不是“上传一个webshell”而是服务端如何校验文件扩展名、MIME、文件头、内容常见的绕过方式双扩展名、大小写、%00截断、图片马解析漏洞的成因IIS 6.0分号截断、Nginx配置错误导致的解析歧义等修复思路使用对象存储并关闭执行权限、白名单校验、重命名文件、单独域名隔离。命令执行相关题目则通常给一段代码问你哪里存在注入。这里有一条判断准则凡是外部输入进入system、exec、eval、shell_exec等函数且没有经过严格白名单过滤都大概率存在命令注入或代码注入。答题时要能指出注入点还要能说明为什么过滤不充分比如只过滤了分号却忽略了换行符或管道符。我在实际安全测试中最喜欢把这三个漏洞连起来思考先通过文件上传拿到一个可访问的文件再通过SSRF让服务端去访问它或者通过命令执行直接读取敏感配置。这种“组合拳思维”在大厂笔试的综合题里非常受欢迎因为它能区分单纯刷题的人和真正有渗透思路的人。3. 密码学与安全协议笔试里的“送分题”和“陷阱题”3.1 对称加密与非对称加密的选型逻辑密码学是安全笔试里最“明确”的模块因为答案非常确定不存在太多绕弯的地方。但正因为确定反而有很多细节容易被忽略。对称加密的常见考点包括AES和DES的区别、分组密码的填充模式、ECB和CBC模式的差异。笔试里经常出的一道题是“为什么ECB模式不安全”很多人只知道“ECB不能隐藏明文模式”但更准确的说法是因为相同明文块会产生相同密文块攻击者可以识别出明文规律甚至可以通过调换密文块来操控解密结果。这个“重排攻击”的点是区分基础掌握和深入理解的标志。非对称加密的考试重点则是RSA的数学基础和应用场景。你不需要会算大素数分解但至少要理解公钥加密、私钥签名的对应关系以及在实际通信中非对称加密通常只用于密钥交换或数字签名真正的大数据量加密还是用对称加密因为性能和密文膨胀问题。这里有个笔试高频陷阱题问“RSA2048和AES256谁的密钥更长、谁更安全”。直接比较长度没有意义因为两者安全模型不同。RSA的安全基于大整数分解难题AES的安全性基于置换网络的混淆与扩散不能用同一维度直接对比。答题时指出这一点能体现出你对密码学不是死记硬背。3.2 哈希算法与口令存储为什么不能只做一次MD5哈希是密码学模块里最贴近业务安全的考点。京东这类电商公司非常看对口令安全所以哈希算法的题目一定不会少。最经典的题目是“数据库中密码应该如何存储”。如果只回答“对密码做MD5加密”那基本凉了。即使加了盐如果盐是固定的、且算法是MD5或SHA1依然存在彩虹表和暴力破解风险。比较完整的答题思路是分三层为什么不能明文存储数据库一旦泄露所有账号直接沦陷且用户经常在多个平台使用相同密码危害会被放大。为什么不能只用简单哈希MD5、SHA1计算速度太快GPU和彩虹表可以在短时间内完成爆破。正确做法使用慢哈希算法比如bcrypt、scrypt、Argon2并给每个用户生成随机盐。慢哈希的核心设计思想是“让每次密码校验都付出计算代价”攻击者暴力破解的成本随之大幅上升。这个知识在真实业务中非常实用。我做安全评审时只要看到新系统还在用“MD5(md5(password)salt)”这种自创方案都会直接打回。密码存储一定不要自己发明算法直接用成熟库这是常识但也是很多人会犯的错。3.3 SSL/TLS握手考点与中间人攻击SSL/TLS在笔试中通常以流程题或配置题出现。最常考的握手流程可以简化记忆为四个步骤客户端发送支持的加密套件和随机数服务端返回证书和随机数客户端验证证书并生成预主密钥双方各自计算会话密钥并切换加密通信。笔试容易忽略的细节有三个客户端如何验证证书检查证书是否由受信任的CA签发、域名是否匹配、证书是否在有效期内、是否被吊销。其中“域名匹配”经常被忽略但这正是许多钓鱼攻击利用的点。混合加密的原因用非对称加密协商密钥用对称加密传输数据兼顾安全性和性能。中间人攻击的切入点如果客户端不验证证书或者用户点击“继续访问”忽略警告攻击者就可以在中间拦截并替换证书实现流量解密。京东这套笔试题如果考到SSL/TLS大概率会结合“如何保证数据在传输过程中不被窃听和篡改”来问。答题时别只背握手步骤要把“证书验证”“密钥协商”“加密传输”三个环节串起来讲才能拿高分。4. 渗透测试实操题考的不是命令而是攻击思路4.1 信息收集从哪里下手才是考官想看的渗透测试模块的题目通常会给一个模拟场景比如“拿到目标域名请描述你的渗透测试思路”。很多人的第一反应是“用工具扫描端口和漏洞”这个答案方向对但不够完整。大厂笔试想看到的信息收集思路是一条完整链路被动信息收集从搜索引擎、证书透明日志、GitHub泄露代码中发现子域名、敏感文件、员工账号主动探测先做端口扫描再根据端口识别服务版本检索对应版本的已知漏洞Web侧信息收集识别Web中间件、框架、CMS指纹寻找后台入口和管理员接口目录枚举和接口枚举通过字典爆破发现隐藏路径重点关注备份文件、源码泄露、API文档。这里有个容易被忽略的加分点拿到目标后先看robots.txt、sitemap.xml、前端JS文件这些文件里经常能看到被注释掉的接口地址和硬编码密钥。我实际做渗透测试时很多突破口都来自前端JS里的API路径。笔试时如果能提到“先提取JS文件中暴露的接口”会让考官觉得你有真实项目经验。4.2 漏洞利用到权限提升拿到权限后别急着写报告渗透测试的综合题经常会问“拿到一个WebShell后下一步做什么”。这个问题考察的是内网渗透和权限维持意识。推荐的回答顺序是信息收集查看当前用户权限、系统版本、补丁情况、网络连接、进程列表、是否有域环境权限提升根据系统版本和安装软件查找提权漏洞Linux查sudo配置、SUID文件、内核漏洞Windows查服务权限、注册表自启动项横向移动抓取内存中的凭据、查找共享目录和数据库连接配置、尝试SSH密钥复用权限维持留后门账号、计划任务、WebShell免杀但要注意笔试中只需要提思路不需要写具体操作。很多人到这里只记得“抓密码”和“弹shell”忘了“搞清楚自己在内网的什么位置”这在真实的攻防演练中是致命的。因为只有理解了网络拓扑才知道继续往哪走或者哪些主机是核心目标。安全工程师的核心能力不是“打点”而是“看懂全局”。4.3 常见安全工具的使用边界笔试也会考察工具的原理而不是命令。比如sqlmap不只是“自动化注入工具”还要知道它如何判断注入类型、如何利用时间盲注、如何读取文件。Burp Suite每个模块的用途要清楚Proxy用于抓包改包、Repeater用于重放、Intruder用于爆破和参数遍历、Decoder用于编码解码。Nmap常用扫描类型和端口状态的含义要清楚比如open、filtered、closed的区别。Metasploit模块结构、payload和exploit的区别。答题时最好补一句“工具的适用场景和局限性”。这套笔试题有意识地加入这类问题是为了筛选出真正理解工具的人而不是只会敲命令的人。工具永远在更新但思路和原理是长期不变的。5. 系统与运维安全Linux提权、日志分析与加固5.1 Linux提权笔试里最常见的系统安全题Linux安全方向最常考的就是提权。笔试的出题方式通常是给一段系统的用户组和文件权限信息然后问“当前用户能通过哪些方式提升到root权限”。常规考点包括SUID文件查找find / -perm -4000 2/dev/null如果某个可执行文件带SUID位且用户可写就能利用它提权。sudo配置查看sudo -l如果当前用户的sudo条目里可以看到一个可结合其他命令提权的程序就存在利用空间。内核漏洞常见Linux内核提权CVE的原理和影响版本但笔试一般只要求知道“内核漏洞提权需要匹配内核版本”这一点。计划任务与PATH注入如果root的计划任务执行了某个可写目录下的脚本可以利用PATH顺序注入恶意同名脚本。答题时有一个通用思路先看自己有哪些权限看系统上有哪些以更高权限运行的任务再看这些任务是否受控。提权本质上就是“找到一条从低权限到高权限的信任链”。这个思路比记住某个具体CVE重要得多。5.2 日志审计与入侵排查甲方安全工程师的基本功安全工程师不只做攻击还要做防御和应急。京东作为电商平台对应急响应能力很看重所以笔试里通常会有日志分析题比如“用户在短时间内尝试登录多个账号如何从日志中识别并分析”。日志审计算是最能体现“实战经验”的题型。答题时要先明确看什么登录日志/var/log/secure对应Linux的ssh登录Windows的事件ID 4625表示登录失败4624表示登录成功、Web访问日志重点看POST请求、特殊参数、扫描特征、应用日志看报错堆栈和业务行为。然后要会串联分析把攻击者IP、User-Agent、请求路径、失败次数合并起来画一条攻击时间线。我面试过不少人能说清楚“看日志”的很多但能现场描述出“先按IP聚合再按时间排序最后看攻击成功与否”这个完整思路的很少。这道题如果答得好可以直接拉开差距。5.3 Windows与办公网安全加固考点虽然多数安全从业者更熟悉Linux但笔试不会回避Windows系统。常见考点包括SMB服务是否可匿名访问、注册表自启动项、用户账号策略、本地管理员密码保护。还有一个大厂越来越爱考的方向物理安全与办公网安全比如“有人捡到公司员工工牌进入办公区并插上了恶意U盘如何预防”。这类题没有标准答案但可以从身份认证、设备准入控制、安全意识培训三个层面展开。答这类题时不用追求具体技术关键是呈现“分层防御”的思维。6. 安全开发与代码审计从源头消灭漏洞6.1 SDL流程安全工程师不是上线前才出现的有些笔试会问“一个产品从需求到上线安全应该介入哪些环节”这个问题考察的是SDL安全开发生命周期的知识。理想的答案应该覆盖四个阶段需求评审阶段评估数据敏感性识别可能的合规要求和隐私风险开发阶段推动代码安全规范落地提供安全组件和SDK对高危函数做静态扫描测试阶段上线前做安全测试包括漏洞扫描、渗透测试、配置核查上线运维阶段监控异常流量、日志和告警做好漏洞应急响应的预案。这里有一个很多人忽略的常识安全如果只在上线前做一轮渗透测试效率非常低且成本高。真正有效的安全建设是把检查点前置到编码阶段通过IDE插件、CI流水线里的自动化扫描来拦截低级漏洞。笔试答题时能提到“自动化安全流水线”这个概念会显得你更贴近甲方安全的真实工作。6.2 代码审计SQL注入、XSS和反序列化在代码里的样子代码审计题通常是给一段伪代码让你找到漏洞。虽然每年题目不同但考点高度固定集中在一批“高危函数”上。以Java为例需要记住的典型问题有JDBC里的字符串拼接SQL对应SQL注入response.getWriter().write(input)对应XSSObjectInputStream.readObject()处理外部输入对应反序列化漏洞Runtime.exec拼接外部参数对应命令注入FileUpload读取文件路径对应任意文件写入或文件上传。PHP的考点则集中在$_GET/$_POST直接进入eval、system、include以及文件上传的move_uploaded_file路径由用户控制。代码审计答题的核心逻辑是“追踪输入流向”从外部输入HTTP参数、文件、上传、请求头出发看它经过了哪些处理最终到达哪个危险函数。如果能把这个追踪过程写清楚即使代码细节有误差考官也会认为你具备审计能力。6.3 常见安全组件与防护框架的考虑笔试还经常问“如何用现有框架解决安全问题”比如Spring Security、Shiro、OAuth2、JWT等。这里要特别注意JWT的常见考法alg不为none、弱密钥爆破、签名验证逻辑缺失。很多业务系统使用JWT做身份认证但开发者并不知道如何安全存储密钥和校验签名。答题时可以这样拆解JWT由Header、Payload、Signature三段组成服务端必须严格验证签名不能信任客户端传来的任何信息密钥要足够长且不能硬编码在前端代码或Git里过期时间不能太长刷新Token要单独设计敏感信息不要放进Payload因为它是base64编码不是加密。这部分的经验来自我经常在安全测试中看到的实际情况很多HR系统、工单系统的JWT密钥是默认密钥直接可以伪造任意用户身份。这类问题不是高深技术而是规范意识不够。7. 业务安全与风控方向验证码、反爬、账号安全7.1 验证码绕过与风控对抗近年的大厂安全笔试逐渐加大业务安全比重。京东作为电商平台最关心刷单、薅羊毛、账号盗用这类业务风险所以验证码是重点考点之一。验证码的常见考题是“如何提高验证码被自动识别的成本”。答案可以从多个层面展开图形验证码增加干扰线、变形、字符粘连、使用行为验证码行为验证码滑块、点选靠收集鼠标轨迹和设备指纹来识别自动化工具短信验证码设置频率限制、IP限制、单账号发送上限防止接口被恶意刷。但笔试更想看到的是“对抗与绕过”的关系验证码不是万能的。攻击者可以用打码平台、机器学习识别、真人众包等方式绕过图形验证码。所以真正的防护是“多维度风控”验证码只是其中一个因子要结合设备指纹、IP画像、行为序列、注册时长来综合判断。能答出这个“点线面”思路说明你真的理解业务安全的对抗本质。7.2 反爬虫如何识别爬虫与防止数据泄露反爬虫题目通常以“公开页面的数据被竞争对手批量爬取如何应对”来问。安全工程师要给出一个可落地的方案而不是只说“封IP”。比较完整的应对思路基础层设置请求频率限制、验证码、登录前置行为层分析访问轨迹如果用户访问速度远超人工或访问路径过于规律判定为爬虫数据层将核心数据改为动态渲染、混淆前端代码、使用自定义字体反爬法律与合规层面在Robots协议中声明爬取规则保留违规访问日志必要时诉诸法律手段。答题时注意不要过度依赖单一策略。爬虫方也会用代理池、无头浏览器、真实设备农场来模拟人类行为所以反爬是一场持续对抗而不是一次性工程。7.3 账号安全与隐私合规场景电商平台还有一类题目围绕“撞库”和“账号盗用”展开。对方用其他平台泄露的账号密码在京东批量尝试登录如何识别和拦截这类题的考点和实际风控系统非常一致登录接口要限制频率并引入CAPTCHA或二次验证对比登录IP和常用IP、设备指纹、操作行为发现异常时触发风控对高危操作改密、改手机号、转账要求重新身份验证后台要做风险分析同一IP段、同一设备指纹、同一时间段大量登录失败自动拉黑。隐私合规方向则可以结合《个人信息保护法》的基本思想来答数据采集要最小化、使用要授权、存储要加密、共享要脱敏。安全笔试出现这类题目其实是在传递一个信号现在的安全工程师必须懂数据合规不能只埋头攻防。8. 笔试常见问题与备考心得实录8.1 最常见翻车点不是技术不够而是答题习惯问题我复盘过很多考生的笔试答卷发现翻车往往不是因为不懂技术而是有以下三个习惯问题第一只给结论不给推导。比如答“SQL注入的防御是预编译”但不解释为什么预编译能防住一旦题目升级成“预编译为什么对order by无效”就答不上来。第二不会用结构化表达。笔试答题区域很大有些人写成了一大段流水账。阅卷人很难抓住重点。建议每个要点分条写使用“原理-利用-修复”的结构句子上来先亮观点。第三忽略防御视角。很多攻击类题目问“如何利用”但出题人其实还想看你能不能“修复”。哪怕题目没有明确问我仍然建议在最后补一句“该类漏洞的通用修复方案是……”既能展示你的完整性也能证明你具备安全建设的意识。8.2 笔试时间分配与答题节奏建议大厂安全笔试通常有两个小时题量较多需要在时间分配上有策略。我的建议是先快速扫一遍全部题目标注出三类题——必答基础题、高价值原理题、需要推理的综合题。先把有把握的题拿满再死磕难题。密码学、Web基础这类确定性强的题目尽量控制在五分钟内答完不要恋战。综合题和思路题需要写的内容多留足时间先搭框架再补充。还有一个很容易被忽略的点不要留空白。安全笔试本身就是一场信息展示哪怕你只是能写出一个相关的概念也比空着强。阅卷人看你是会一点但表达不清还是根本没有接触过分数完全不同。8.3 从笔试到面试安全工程师的成长路径笔试通过后面试更侧重于考察真实项目经历和思维深度。因此不要只刷题建议在笔试复习期间同步做三件事在本地搭建靶场把SQL注入、XSS、文件上传的手工利用流程完整过一遍读两到三份公开的漏洞分析报告不只是看利用过程更重要是看他们如何做信息收集、如何定位漏洞根因、如何给出修复方案选择一个方向深入比如Web安全或二进制安全形成自己的专长标签。我自己的体会是安全行业并不缺会打CTF的人缺的是能把漏洞讲清楚、能推动业务方修复、能在业务和安全之间做平衡的工程师。笔试只是入场券真正的成长在于后续每一次应急、每一次代码审计、每一次和开发团队的沟通。如果你正在准备安全岗位的校招或跳槽不妨把京东2018秋招安全工程师笔试题当成一次自测不急着看答案先模拟考试环境从头到尾写一遍再逐题复盘。这个过程中暴露出来的薄弱点就是你接下来一个月最值得花时间的地方。安全这条路没有捷径但方向对了每一步都算数。