ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

移动端安全实习生笔试全解析:考点、题型与备考路径

2026/8/30 5:47:07 拓冰建站 浏览量
移动端安全实习生笔试全解析:考点、题型与备考路径 移动端安全实习生笔试说真的很多人一开始都低估了它。2018年那阵网易这类大厂把移动端安全岗单独拎出来招实习生笔试题一出很多以为“会抓个包、能查个log”就能过的同学直接被劝退。它不是单纯考渗透也不是单纯考Android开发而是把计算机基础、移动开发、密码学、漏洞思维揉在一张卷子里既要你懂原理又要你能写代码甚至还会问你怎么设计一套防护方案。这篇文章就是冲着“移动端安全实习生笔试题”这三个字来的。我会结合我当年备考和后来带人的经验把这类笔试的知识地图、高频考点、答题套路、踩坑记录全部拆开讲。不管你是准备投递安全岗的实习生还是刚接触移动安全的开发同学这套内容都能帮你少走弯路。别再抱着“刷几十道CTF题就能过笔试”的侥幸心态了真实的大厂笔试考的是你能不能像一个安全工程师那样思考。1. 移动端安全实习生的岗位画像与笔试逻辑1.1 这个岗位到底在招什么样的人先搞清楚一件事移动端安全实习生不是招“漏洞扫描器和工具的搬运工”。在我接触到的2018年前后大厂安全团队里这类实习生的日常大概是三块第一对App做上线前的安全测试包括权限检测、数据存储审计、网络传输分析第二参与安全SDK的开发维护比如设备指纹、风控组件、加解密模块第三配合合规团队做App隐私政策落地检测比如有没有超范围收集个人信息。这就决定了笔试不可能只考单一领域。它要筛选的是那种“基础扎实、看代码不怵、有漏洞嗅觉”的人。你不需要在某个方向上已经是专家但你必须证明自己能在三个月内被培养成专家。所以我一直建议准备这类笔试时别按“Android开发面试”或“Web安全面试”去准备而要按“移动应用安全评估”做一个完整的知识闭环来复习。笔试题目往往故意跨知识点出题比如给你一段WebView配置代码让你同时说出JavaScript注入风险、文件读取风险和URL白名单校验问题这考的就不是单点记忆而是你对一个功能模块整体的安全敏感度。1.2 笔试考察的四个能力维度我反复拆解网易这类大厂移动安全岗的笔试题型发现它始终围绕四个维度转。第一个是计算机基础包括操作系统、计算机网络、数据结构与算法。操作系统考进程间通信和文件权限网络考TCP握手和HTTP/HTTPS的区别算法考最基础的字符串处理和二叉树遍历。这些题目的难度其实不高但安全方向会变着法子包装比如“ContentProvider跨进程访问底层依赖什么机制”。第二个是移动平台特性主要是Android、iOS的系统架构、组件模型、生命周期、沙盒机制。笔试对Android的考察比重通常更大因为Android生态开放安全事件频发。四大组件、Binder通信、SharedPreferences、SQLite、WebView、混淆加固这些都是高频面孔。第三个是安全基础包括密码学常识、常见漏洞原理、攻防对抗思路。这里注意笔试不要求你记住所有加密算法的实现细节但你必须知道对称加密和非对称加密各自解决什么问题哈希为什么不可逆加盐是为了防什么。第四个是工程能力就是代码阅读和逻辑推导。笔试题常给出一个完整或者残缺的代码片段让你找问题、补逻辑、给方案。这个维度最拉分因为很多同学能背出漏洞概念但一到真实代码里就看不出来。四个维度的关系可以用一个话概括基础是底盘平台是战场安全是思维工程是手段。备考的时候四者缺一不可只盯着一块卷子发下来一定会有大片空白。2. 客户端安全考点权限、组件与数据存储2.1 Android权限机制与常见的越权思路客户端安全是移动端安全笔试的“基本盘”而权限机制几乎必考。Android权限体系分为安装时授权和运行时授权两个阶段2018年这个时间点Android 6.0及以上的运行时权限机制已经普及笔试很喜欢问“targetSdkVersion对权限模型的影响”这类细节。普通权限、危险权限、签名权限这三者的区别要能说清楚尤其要理解签名权限的意义只有同一签名的应用才能申请这是App间信任的基石。笔试中常考的一个反例就是声明了android:protectionLevelsignature却使用exportedtrue一旦导出就失去了保护意义其他应用可以通过startActivity触发敏感界面或者拿到返回值。权限绕过是更进阶的考点。比如一个应用把日志写到外部存储虽然日志文件本身不带敏感权限但任何有READ_EXTERNAL_STORAGE权限的恶意App都能读到。再比如一个App通过FileProvider共享文件如果path配置得过于宽泛会导致目录遍历。笔试题目往往就是给一段file_paths.xml问你能否访问到不该暴露的私有目录。我的建议是复习时把权限理解成“数据访问的边界”不要死记权限清单。一个权限的出现背后总对应一种数据或者能力而攻击者的本质诉求就是绕过边界拿到不该拿的东西。带着这个思路去看权限声明很多题目不用背也能推导出答案。2.2 四大组件安全导出、劫持与数据泄露四大组件是Android安全笔试的重头戏Activity、Service、BroadcastReceiver、ContentProvider每一个都能单独出题也能组合出题。Activity最常考的是导出风险。exportedtrue的Activity可以被外部启动如果这个Activity里处理了敏感数据展示、支付确认、密码输入等操作就可能被恶意应用钓鱼劫持。更隐蔽的是隐式Intent劫持即使Activity没有显式导出但只要定义了intent-filter系统就会允许隐式启动第三方应用也能构造匹配的Intent。Service的风险主要在于任意启动和远程绑定。一个导出的Service如果onBind里返回的Binder暴露了敏感方法就等于对外开了IPC通道攻击者可以调用来读写数据或者触发操作。BroadcastReceiver的风险则在越权接收和恶意广播注入很多开发者在onReceive里直接执行逻辑而没有校验来源导致攻击者构造恶意广播触发未授权行为。ContentProvider是笔试最喜欢做文章的组件。不合理的导出直接导致数据泄露还有SQL注入的风险——如果query方法里直接拼接参数攻击者可以通过精心构造的selection参数查询不该看的数据。答题模板我后面会细讲这里先记住一条原则凡是能看到“外部输入直达高危接口”的代码路径都是风险的天然载体。2.3 数据存储安全别把秘密放在“以为安全”的地方数据存储安全几乎是移动端笔试里性价比最高的考点因为它特别贴近实际开发题目也好设计。最典型的就是SharedPreferences存明文密码、token、身份证号这类敏感信息。SharedPreferences文件默认放在应用私有目录本身有一定的隔离性但一旦设备Root或者通过备份机制导出文件内容就是明文裸奔。笔试如果问“如何在SharedPreferences中安全存储token”答案不是加密字符串本身而是用Android Keystore或安全硬件生成密钥再用这个密钥去加密数据密钥本身不进SharedPreferences。SQLite数据库也有同样的故事。很多App把用户聊天记录、支付信息直接存明文数据库而且数据库文件还在外部存储上留了备份。笔试出现频率很高的一个坑是“数据库使用了字段级加密但加密密钥硬编码在代码里”这种“伪加密”在熟悉代码审计的人眼里等于没有加密。另外一个容易被忽视的点是日志泄露。Logcat里打印了完整的请求响应体、token、加密密钥在Debug版本上这是开发便利但Release版本一旦忘记关闭任何有READ_LOGS权限的应用都能读走。这个点笔试不一定直接考但面试官经常顺口问一句能答出来就是加分项。2.4 iOS侧安全基础沙盒、Keychain与越狱检测网易的移动端安全实习生笔试Android和iOS会一起考。iOS平台的考点相对集中核心就是沙盒机制、Keychain和越狱检测。iOS的沙盒比Android的隔离更严格每个App只能访问自己的容器目录。笔试经常给一个路径列表问你哪些目录适合存敏感数据。Library/Preferences、Documents、tmp之间的区别要清楚Documents会同步到iCloud所以敏感数据不该放这里。Keychain是iOS上Apple官方提供的数据加密存储方案数据在沙盒之外即使应用被删除Keychain数据也可能残留在设备上。笔试常问的是Keychain访问组和kSecAttrAccessible属性配置比如kSecAttrAccessibleAfterFirstUnlock意味着设备第一次解锁后即可访问安全性相对较低。越狱检测是另一个高频考点。不是说要你写一个完美不可绕过的检测方案而是要你理解为什么App需要做越狱检测以及常见检测手段的绕过思路——比如检查常见越狱文件路径、检测动态库注入、尝试写系统目录。笔试题目可能是给你一段检测代码让你分析逻辑漏洞比如通过文件路径判断是否存在越狱环境但攻击者可以hook文件API来伪造返回值。这类题目考的是“对抗意识”不是标准答案。3. 网络传输安全考点加密、证书与通信防护3.1 HTTPS与证书校验别把SSL当万能药移动应用网络传输这块几乎绕不开HTTPS和证书校验。笔试不会考你TLS 1.3的握手细节但会问一些原理级的问题比如“HTTPS一定安全吗”“证书校验失败时客户端应如何处理”。证书校验是重点。正常流程是客户端在握手过程中校验证书链是否合法、域名是否匹配、证书是否过期。但实际开发中很多App为了调试方便直接信任所有证书或者定义了空的TrustManager把checkServerTrusted方法实现为空。在笔试场景里这就是一个“一眼问题”的代码漏洞。攻击者在局域网内伪造一个证书客户端这时候不仅不会拒绝反而照单全收通信内容全程透明。还有一个常见坑是证书固定策略。简单校验证书链仍然可能被系统中被安装的任意Root CA证书绕过攻击者可以诱导用户安装一个自签名证书。证书固定Certificate Pinning就是绝佳的补救思路客户端把服务器的公钥或者证书摘要内置在代码中校验时强制比对。笔试题目会问“证书固定的优缺点”答案里必须体现“防中间人能力强但证书轮换时App不发版就会导致服务不可用”这个双刃剑特性。3.2 常见网络攻击类别与防护思路结合移动端场景笔试常涉及三类网络攻击。第一类是中间人攻击就是刚才说的证书校验缺失导致的。防护思路的核心是“建立可信的身份认证通道”用证书固定、双向TLS等方式解决。第二类是重放攻击攻击者不需要解密数据只要把抓到的合法请求原样再发一遍就能造成重复扣款、重复操作等风险。笔试常见的问法是“如何防止接口被重放”答案要点一般是时间戳、随机数nonce和签名机制服务端对一定时间窗口内的nonce做去重。第三类是数据完整性攻击攻击者在传输途中篡改请求参数比如把转账金额从100改成1。解决思路是加签名。客户端对关键参数计算HMAC服务端用同样的密钥校验这里马上就能考察你对HMAC的理解——它是哈希和密钥的结合能同时保证完整性和一定程度的身份认证。这里想提醒一句回答网络攻击类题目不要只堆术语最好按“攻击路径→影响→修复”来组织答案这样即使不够深入也能展示出完整的安全思维。3.3 对称加密、非对称加密与哈希懂原理更要懂场景密码学基础是移动端安全笔试送分也送命的部分。送分是因为只要你背过算法特点比对称非对称、可逆不可逆就答得上来送命是因为题目会换个角度考“场景选择题”比如该用AES还是RSA、该用MD5还是SHA。先说对称加密典型代表AES。特点是加密解密用同一个密钥速度快适合大批量数据。痛点在于密钥分发难客户端和服务端都要持有同一个密钥一旦客户端被逆向密钥就泄露。笔试题目常问“如何安全地在客户端存储AES密钥”答案无非是放到安全硬件、白盒加密、动态混淆但你要知道这些方案只是提高逆向成本而不是彻底解决。非对称加密里最常考的是RSA。公钥加密、私钥解密或者反过来私钥签名、公钥验签。笔试经常设置一个场景比如“App拿到服务端公钥用RSA加密AES会话密钥传给服务器后续AES加密通信”让你分析这个流程有什么漏洞。这个流程本身是合理的但如果没有做密钥校验和身份确认中间人可以替换公钥后续加密形同虚设。哈希算法重点考两个点。第一MD5和SHA系列都不可逆但MD5存在碰撞风险且速度快容易被暴力破解所以密码存储要用BCrypt或PBKDF2等慢哈希或者至少加盐后再做多次哈希。第二哈希不是加密它不保密度只保证完整性。这是笔试判断题的高频陷阱很多选项写着“对用户密码进行哈希加密存储”语言上不够严谨“哈希”和“加密”不能混用。4. 漏洞挖掘与代码审计笔试里的重头戏4.1 移动应用常见漏洞类型盘点移动端安全笔试越来越喜欢“按漏洞口述题”来考给你一个漏洞类型让你描述危害、利用场景、修复方案。所以脑子里得有一张漏洞清单。我从实际笔试经验里总结了一张高频表覆盖最常考的类型漏洞类型典型场景核心危害不安全的日志输出关键参数打印到Logcat敏感信息被本机其他应用读取WebView远程代码执行未设置setAllowFileAccess或JS接口泄露任意命令执行、文件读取硬编码密钥/账号代码中直接写API Key、AES密码密钥泄露导致加密体系失效中间人攻击未校验证书通信内容被窃听、篡改敏感数据明文存储密码、token写入SharedPreferences本机数据泄露不安全的反序列化攻击者控制输入流恶意对象注入、代码执行深层链接校验缺陷Scheme跳转参数被篡改越权操作、钓鱼这张表是你复习的骨架。每看到一个漏洞类型就问自己三个问题它是如何产生的攻击者如何利用它最小代价的修复方式是什么把这张表跑熟笔试里90%的“口述漏洞”题都能应对。我在实际备考时会把每一个漏洞类型都整理成一个“一句话加两个字段”的记忆卡片一句话描述漏洞原理两个字段分别写利用条件和修复建议。这样考前快速过一遍效率比反复看整本教材高得多。4.2 代码审计从入口点开始“跟着数据走”代码审计题在笔试里通常表现为“给你一段代码找漏洞”。很多同学看到一大段代码就懵了其实审计是有路径可循的。第一个要关注的是入口点。在Android代码里凡是exportedtrue的组件、注册了intent-filter的Activity、自定义的ContentProvider、JavaScriptInterface注解的方法都是攻击者的入口。入口点是审计的起点先看哪些外部输入能一路流到代码内部。第二个还要关注的是数据流。入口点往往只负责接收数据真正的危险发生在数据去向。比如外部传入的URL被WebView.loadUrl直接执行外部传入的内容被拼到SQL语句里外部传入的路径被用来拼接文件路径。我在笔试里常用的策略就是“画一条数据线”从源头到汇点中间每经过一个处理环节就停下来检查一次有没有过滤和校验。第三个就是危险函数本身的识别能力。Android常见的有loadUrl、execSQL、readFile、getSharedPreferences后未加密的写入以及Java里的Runtime.exec和反射调用。识别出危险函数后再逆着往上找调用链看是否有外部可控的参数传入。这套“入口点→数据流→危险函数”的审计思路在真实项目和笔试里都能复用。如果笔试题目只给了一段没有入口的片段时间有限的情况下优先看那些直接访问文件、网络、数据库的代码区域通常陷阱就在那里。4.3 逆向工程基础这不是炫技是基本功移动端安全实习生笔试和面试里逆向工程是加分项但不是让你现场反编译APK。笔试更多是考察你是否了解APK的结构和反编译的基本逻辑。APK的本质是压缩包里面包含AndroidManifest.xml、classes.dex、资源文件和so库。笔试可能会问“Dex文件是什么”“assets和res的区别”“so库的作用”。这些答案都要落到“代码与资源分离、平台相关二进制、加载时机”这些点上。另一个常考的是混淆与加固。混淆的核心作用是增加代码阅读难度把方法名类名改成a、b、c但混淆不是加密逻辑依然可以通过反编译还原。加固则是把Dex文件加密藏起来运行时再解密加载这能有效对抗静态分析。笔试会问“加固的Dex在内存中会解密如何对抗内存Dump”这就要知道内存变化检测、反调试、模拟器检测等思路。至于脱壳、动态调试、Hook这些更深的技能笔试一般不会直接考操作但会在面试环节被追问“你是否了解原理”。我建议至少搞懂一层加壳后程序运行时壳负责解密原始Dex并加载这个过程会被DexClassLoader或系统类加载器接管理解了这一点后续所有动态分析技巧都是从这里延伸的。5. 笔试实战几种题型的高分答题框架5.1 选择题与判断题两个原则帮你避坑移动端安全笔试的选择题难点不在知识点有多深而在干扰项设置得很恶心。我总结了两个答题原则几乎可以应对所有选择题。第一绝对化的表述基本是错的。选项里出现“任何情况下”“完全避免”“绝对安全”“所有攻击者都无法”这类词大概率是干扰项。安全领域没有银弹任何防御都有绕过可能绝对化表达不符合安全从业者的思考方式。第二凡是把“加密”和“哈希”混用、把“对称”和“非对称”搞反的表述直接排除。判断题里最常见的坑就是“将用户的密码使用MD5加密后存储”这句话就有两个缺陷一个是把哈希说成加密一个是没提加盐。这种题考的不是记忆而是准确表达。选择题还有一类是补全代码。比如给一段不完整的签名校验逻辑让你选缺失的步骤。诀窍是跳出选项本身先想清楚这段代码想解决的问题是什么。比如代码在做“防止请求被篡改”那缺失的步骤一定是“对请求参数做规范化排序计算HMAC拼接入请求头”而不是别的花哨操作。5.2 简答题用“问题-原因-方案”三段式拿高分简答题是笔试的大头也是最能拉开差距的部分。很多人失分不是因为不会而是因为答得没有结构想到哪写到哪。我强烈推荐“问题描述→原因分析→修复方案”的三段式答题框架。拿一个高频题举例“ContentProvider数据泄露风险有哪些如何发现和修复”。第一段先描述问题ContentProvider用于跨进程数据共享如果导出且没有正确的权限声明其他应用可以通过query方法读取内部数据造成敏感信息泄露。第二段分析原因开发者在AndroidManifest中为ContentProvider设置了exportedtrue却没有配置readPermission或者代码内部没有做参数校验导致越权访问和SQL注入。第三段给修复方案关闭导出或设置专用签名权限对query请求做参数白名单与转义敏感数据加密存取使用skipQuery等方式减少暴露面。这样答下来即使个别细节不够精准整道题给人的观感也是一份“完整的安全评估报告”而不是零散的知识点拼盘。我在实际阅卷过程中发现同样知识点覆盖的情况下结构清晰的答案往往能多得3到5分。5.3 场景设计题先做威胁建模再谈防护除了基础题型网易这类大厂还喜欢出开放性的场景设计题。比如“设计一个App的登录安全方案”“如何保证App内支付的传输安全”“给一个记账App做隐私合规评审你会怎么展开”。这类题没有标准答案但阅卷人有明确的评分倾向看你有没有威胁建模的思维能不能从攻击者视角想问题再给出分层次的防御方案。我个人的答题顺序是四步走。第一步划定敏感资产。这个场景里最重要的东西是什么登录场景就是用户名、密码、会话令牌支付场景就是支付凭证和金额。先明确要保护什么后面所有方案都围绕“保护这些资产”。第二步列出威胁路径。攻击者通过哪些路可以拿到这些资产密码泄露可能来自弱口令、数据库泄露、中间人窃听会话令牌可能来自本地存储、日志打印、URL携带。这一步是在模拟攻击者视角威胁想得越全面方案越完整。第三步分层设计防护。客户端弱口令检测与服务端风控结合传输层用HTTPS加证书固定存储层用Keychain/Keystore加密服务端再配合设备指纹和异常行为检测。每一层可以展开一点细节说明为什么这么设计。第四步说明验证方式。你会通过哪些测试验证方案有效性比如抓包看证书校验是否生效反编译检查是否有密钥硬编码权限测试看ContentProvider是否暴露。这一步展示了工程落地能力是场景题提分的关键。这套四步框架前提是你的知识面足够覆盖“客户端、传输、服务端、验证”四个维度。所以平时的积累一定不能只盯一个方向必须要把移动安全的知识网络织起来。6. 避坑心得我踩过的坑和给你的建议6.1 备考复习时最容易犯的三个错误第一只刷题不建体系。我见过太多人把CTF题和笔试真题刷了一遍又一遍但遇到新角度就懵。原因在于脑子里没有知识框架题目稍微换个包装就识别不出背后的考点。建议每复习一个模块就自己画一张知识地图像“ContentProvider→导出风险→SQL注入→权限绕过”这样的链路画多了就有了“条件反射”。第二只学攻击不学防御。笔试确实爱考漏洞利用但简答题和场景题里修复方案和防护策略的占比很高。只了解怎么攻击答题时只能答一半。我复习时有一个强迫自己的习惯每学一个攻击手法必须同步查出至少两种修复思路并各写一句话总结。第三忽略代码阅读训练。移动端安全的落地场景永远是代码。有些同学安全理论说得头头是道但一见到完整的Java或Kotlin代码就发怵。笔试的时间有限代码读得慢非常吃亏。考前建议每天抽30分钟看开源App的源码重点看网络层、数据存储和WebView相关代码刻意训练自己快速定位敏感代码的能力。6.2 答题时间和试卷节奏控制移动端安全笔试的时间通常很紧题量又大。我的经验是发卷后先花两分钟扫一遍全卷把题目的类型标注出来。选择题和判断题尽量一遍过不要反复纠结拿不准的先标记最后有时间再回看。简答题和场景设计题是拿分重点剩余时间的大头要留给它们。遇到不会的题不要空着。安全方向的阅卷更看重“分析过程”而不是“标准答案”。就算你不知道某个具体配置的准确写法也可以把思路、攻击路径、解决方案的方向写出来。比如你忘了protectionLevel的准确枚举值但你写意识“必须限制ContentProvider的调用方身份”这也能拿到一部分分。我自己习惯在答题前把每道简答题的框架先写在草稿纸上想清楚要写哪几个要点再动笔。这样可以避免写着写着跑偏也能保证结构完整。控制每道简答题的篇幅在5到10行之间太短显得没货太长会挤占后面题目时间。6.3 笔试只是起点别带着“应试心态”入行最后想多聊一句。很多人把笔试当成“闯关游戏”题目背下来就散了其实这是一个危险的信号。移动端安全这个领域技术栈更新很快、攻防对抗是动态博弈今天正确的结论明天可能就因为新机制而失效。笔试里的思路本质上是你在真实做安全评估时的热身。我后来在带实习生的时候最看重的是那种“能把一道笔试题延伸成一个小实验”的人。比如笔试考了证书固定有人会顺手去抓一下自己手机上某个App是不是做了完整的证书校验这个动作就说明他有真实的好奇心。面试官和Leader最喜欢的恰恰是这种不满足于纸面答案、愿意动手验证的人。移动端安全实习生的笔试备考说到底是一个“建立安全思维方式”的过程。技术知识点可以短时间突击但那种“看到一段代码自动联想到攻击路径”的直觉需要靠长期的积累和刻意练习。把这篇拆解里的知识框架吃透再结合实际代码多多练习你就能在笔试里不仅答出要点还能答出层次感。这一路走来我自己最大的体会是别把安全当成一堆面试题的集合它是一门观察世界如何运作的学问。带着这种心态去准备笔试自然不会差。