Home

Awesome

网络安全面试指南(CybersecurityInterviewGuide)

** 为获得最新内容以及更好的阅读体验,可移步 网络安全面试指南 **


        多年来筛选了数以千记的简历,为何很多人连面试的机会都没有?参与了数以百记的应聘者的面试,为何如此多的人没有通过最终面试?能力当然是最重要的,可我却见过很多能力不比已经入职的同事差却应聘失败的人,到底该如何做?希望这篇安全从业者面试指南能够帮到你,让你少走一些弯路。

        本文目标是希望创造一份针对网络信息安全领域从业者的面试指南,从行业、企业、从业者等方面了解当前现状,学习通用的面试和招聘经验,核心围绕各个细分安全岗位的体系实用高质量题库展开。

        本文主线围绕面试者视角进行全流程讲解,其中会穿插企业视角、HR视角以及技术面试官视角,让你能够更加全面体系的理解并吸收各种经验。其中核心题库部分,会存在较强的时效效应,因此会不断的进行更新,增加新的题目、剔除不合适的题目、调整题目难度或解答提示。此外题库的来源于真实工作中,能够确保题目能真实反应应聘者能力水平。

        因作者能力和精力有限,如有错漏,请通过GitHub Issues或邮件feei#feei.cn反馈,感谢!

读者对象

本文内容适合应聘者以及面试官。

同时,本文也被众多企业面试官所采用,作为面试官也可以使用相关领域问题,同时也欢迎通过评论提交你觉得有价值的问题。

版权申明

        本文仅代表个人观点,和所在公司无关,如有任何建议或意见请直接联系作者。本文开放至互联网,可免费阅读转载,转载请注明本文作者和本文链接信息安全面试指南


网络安全面试指南

1. 网络安全行业现状

1.1 网络安全行业现状

        安全行业起步晚。安全行业整体起来才没几年,多数企业因为资源投入和建设时间原因导致覆盖面和深入度都不够,这其中甚至包括一些国内大厂,并没有想象的那么安全。其安全水位仅能应付一些白帽子级别,针对专业黑客团伙持续定向攻击,大多数都不能防御住,看HW就知道了。

从业人员薪酬高

        由于安全行业起步晚,安全人才紧缺,需求旺盛,导致安全从业者薪资水涨船高。高到什么程度呢?都知道互联网行业薪酬是所有行业中最高的之一,技术类是互联网行业中薪酬相对最高的职能,而安全工程师又是技术人才中薪酬最高的,和当下发展正火的机器学习人才并驾齐驱。可能还是没概念?这么说,应届信安专业优秀本科生能拿到每月20000-35000(当然这里面有很多行业内卷的因素,一些公司的招聘策略是入职即巅峰,后面薪资就不怎么涨了),努力工作三四年的能拿到40000每月,做到安全团队管理者后能拿到百万年薪,做到行业顶尖能拿到千万年薪,后面也会讲不同薪资对应需要什么样的能力结构。随着市场调节,越来越多的学校开设信息安全相关课程,越来越多的培训机构教学信息安全知识,越来越多的人学习或转行做信息安全,整体紧缺情况有所好转。

安全水位难衡量

        很多事情是有因果关系的,前面讲到的良莠不齐的根因在于很难通过结果来判断安全建设的水位。很多团队的KPI是不出安全事故——什么事都不做也不会出安全事故。于是造就了吹嘘拍马之人的风生水起。但随着实战红蓝演练的普及,国家级别实战攻防演练的规模和范围扩大,逐渐用模拟实战的方式来检验防护和应急效果,能一定程度上改善这类情况。

从业人员良莠不齐

        好处是会有更多的人投身于安全,当然坏处也很明显,人员空缺与岗位的紧急程度导致存在大量能力良莠不齐的人在行业内浑水摸鱼,明显的特征是你跟他聊技术细节他跟你聊推进落地,你跟他聊推进落地他跟你聊方向把控,你跟他聊方向把控他跟你聊团队管理,你跟他聊团队管理他跟你聊行业空间,如果这些方面都能聊一点那也行,更多人是答非所问或者看似句句在理实际空洞无物,更有甚者,不知在何处听到的理论还没消化完毕,就拿出来班门弄斧。虽然这么说会得罪一部分人。有人问难道入职后不能衡量出来吗?正常老板不懂的情况下,还真不能衡量出来,主要是因为前面讲到的安全水位难以衡量,而实际的安全风险都是小概率事件。

安全建设驱动因素转变中

        金融、电商、游戏这些业务类型对安全有天然诉求,作为业务的重要属性,不做安全黑灰产都会盯上来,此时属于黑灰产驱动安全。乌云等公共漏洞报告平台兴起后,各家企业的安全建设又上了一个台阶,属于白帽子安全事件驱动。而后,白帽子驱动的模式由于合规问题也逐渐减少。更多企业只是为满足合规而进行安全建设,甚至一些企业会购买大量安全产品,但只为了应付监管检查却不使用,此时仅为合规驱动安全。最近几年的行业风气,因为国家攻防演练的增加而变得正常起来,逐渐演变为由实际风险驱动安全。

安全圈子文化氛围浓厚

        安全是一个小圈子,圈内事件传播十分迅速,比如哪家企业数据库泄露、哪家业务活动被薅羊毛、哪个安全人被抓、哪个企业遭到了什么处罚等负面新闻。圈内人能够很快了解到行业新技术、新方向、新政策,能够很容易了解到每家公司的安全建设情况。你能了解到阿里安全与线下公安配合的手段之强,也能认识到腾讯的SRC如何能够运营的的这么好,更能和百度的安全人讨论如何让机器学习赋能安全产品,这一切场景在安全圈内的实现都非常容易。众多安全会议的举办也能让你学习到每家公司的经验,无需自己摸索、闭门造车。这都是小圈子的好处。当然弊端也很明显,总有一些人搞所谓的“圈子文化”,混迹于各种安全会议主动认识圈内人(当然这里不是指各家SRC运营的同学,这些是运营同学的工作一部分)。结识所谓圈内人如果出于交流技术的目的也能理解,但这些人仅仅是加上微信,发送一条打招呼的自我介绍后就再也不会有任何有意义的交流。妄图以这样的方式让自己进入圈子中心,可笑可悲。

学历相对不重要

        安全圈存在很多无学历或低学历的牛人,他们年龄可能不大、工龄也短,但往往都是兴趣驱动,早期就在安全方面投入了大量时间精力,因此颇有造诣。当长处特别突出时,往往会突破企业的一些要求限制,比如岗位学历要求本科时,候选人突出的安全能力能让这项要求降低。同时也必须正确认识低学历对工作带来的影响,在当前安全行业逐渐细分、安全建设越来越深入的趋势下,安全从业者不再只是会挖漏洞就行。建议低学历候选人尽早通过自考的方式系统的学习英语、数学、计算机基础等学科,并获得国家认可的成人教育学历,届时学历问题的影响就不再会是问题。随着大量院校开设信安专业,越来越多的人进入到安全行业,后续企业招聘安全人才时,学历要求肯定会和其他行业一样成为基础筛选要求,以降低招聘成本

1.2 安全公司与公司安全选择

        我们都知道选择比努力重要,人生总在不断面临选择,有些选择大有些选择小,而下一家公司则是人生中最重要的选择之一,这个选择关系到你未来几年甚至整个职业生涯的成功与否,无论是技术能力、管理经验、薪资水平甚至另一半都会受到影响。选择一家对的公司会让我们接下来几年得到事半功倍的成长。

        穷选互联网。从行业历史发展角度来看,互联网无疑是发展最快的,虽然已经高速发展多年但还在持续不断的进化,趋势持续向好。同样的人在传统行业工作五年前后,并不会有太大差别。但在互联网行业,你永远无法想象自己五年后是怎么样的,互联网将赋予你无限可能性。从二十多年前开始,我家里就一直在开服装加工厂,除了在我还小的时候,那时服装产业火热,工厂赚了一些钱外,就再也没什么大的起色。其余一些开厂的亲戚朋友都没赚到什么钱,反而是厂房卖了赚了不少钱。我哥哥是公务员,很多人都会羡慕他工作轻松稳定,但工资涨幅、职位升迁都能预料的到,一眼望到头的职业空间不是每个人都能接受的,在体制内你再努力都会显得那么力不从心。

甲方好于乙方

        互联网又可分为甲方和乙方,乙方由于是销售导向的,所以在人员技术深度和薪资水平上相对甲方会明显差一些,因此优先选择甲方。 我面试以及接触过太多乙方人员,不可否认有很优秀的,但受限于乙方的工作形态,大多数还是在做一些基础且重复性的事情,长期在这种环境下只会毁掉自己。

        选择巨头或潜力股。互联网甲方又可以大致分为综合体巨头、大型平台经济公司、细分独角兽、初创公司,对于多数人来说按从左到右的优先级选择是最优解,但也有意外,选择独角兽公司有可能为你带来更大的资金收益(期权价值增幅)和综合能力成长(安全广度和空间),当然很有可能变成过气独角兽。

        刚工作那两年,我在好多个小互联网公司工作过,这么多年过去了,还在小互联网公司的前同事现在的薪资还在两万多,而巨头热门岗位的应届生薪资都比他们多,这就是小公司的天花板。由于业务规模导致技术深度、薪资水平很容易进入瓶颈期,且随着时间推移,你的技术热情也在消退,学习能力也跟不上,年纪也成为了进入大公司的瓶颈。

        我庆幸的是在14年加入了当时的虽小但有潜力的公司蘑菇街,陪着蘑菇街一路到上市。有潜力的公司能让你坐上技术成长的快车,跟随公司一起成长会更顺畅和扎实。当你无法判断潜力时选择某个细分领域独角兽会更加稳妥。后来进入蚂蚁,往往大公司过了初期建设阶段,能让你更专注在某一个细分点上深入进去,同时薪资和向上发展也能得到保障。

        努力提升,及早逃离小且没有潜力的公司,否则别期望你的人生有什么改变。

钱和成长兼得

        金融、电商、游戏公司很早就会有安全岗位,正是因为他们业务上对安全天然有着强诉求。一方面对安全的资源投入上会大很多,能让安全话语权、事情推动上变得水到渠成。另外一方面你无需为了寻找那不存在的安全风险而努力,自然而然的会持续有大量投入进行长期建设。

        见过太多公司的安全建设不以解决实际安全风险为出发点,开拓了一些伪安全需求,做和不做公司的风险都在那儿。

        不要服务伪需求,害了公司也害了自己。

文化氛围至关重要

        从事黑灰产的公司先排除掉,包括擦边球的,公司文化不正就会出现flanker前公司那种让安全人员做一些违法的事情,短期是能赚到一些钱,但习惯赚这类钱就很难再回去了,而且很容易就得研究监狱安全性。 团队氛围是一个很泛的概念但却至关重要,做的开心与否决定了做的能否长久。其中包括大家相处的融洽程度、做事方式方法、团队公约、人员能力等,提前找人打听下这个团队的氛围是非常有效的方式。 我很庆幸自己的兴趣和工作是一件事,每天都能很开心的工作。但如果团队氛围不好,就像跟不喜欢的人玩游戏一样会非常痛苦。 正向的文化和氛围有助于我们待的更久。

岗位契合度是重中之重

        岗位第一优先级需要关注是否和自己的未来的职业发展规划是否匹配,不合适的岗位发挥不出你的才能,继而成长也就相对较难。第二要关注你擅长的技能和公司的需求要匹配,才能发挥最大生产力。

我见过太多上班如上坟的同事,也见过明明之前很优秀的人但去了某个公司突然就沉寂了。当然也有团队能够因人设岗,用人之所长补企业缩短,充分发挥出最大效率。

1.3 网络安全人才基础素质与能力分层

        具备基础的工程师素质是从业的基础,在攻防渗透和软件开发有较为扎实的基础,同时兼备兴趣驱动和良好的适应能力上比较亮眼,则能很好的适应工作挑战。

1.3.1 网络安全人才基础素质

基础:渗透测试和软件开发

        首先要明确一个概念,术业有专攻在安全行业不是常态。安全本身就是一个覆盖了客户端、前端、网络、后端、服务器等涉及JavaScript、Python、PHP、Java等各语言的工作,如果非要讲究术业有专攻就没法做了,当你可以有擅长的方向,但前提是你都懂。这个“懂”不应该只停留在了解的层面,如果你是安全开发工程师,除了研发技能外,还必须知道常见漏洞的形成原因、利用方式和修复方案。如果你是渗透工程师,除了理解各种漏洞的攻击细节外,还必须有基本的开发能力。同时拥有攻防渗透和软件开发能力的人,在安全从业时的方方面面都会体现出极大的优势。

        计算机基础技术要了解并持续学习,安全也是不断在进步的,几年前你很会挖漏洞就很厉害了,但今天你还是这样的话就没什么优势了。

        摸黑前行最好的应对方法是你曾住过这个房子,或许你是一位资深研发工程师,但安全产品不同于用户产品,往往是没有经验也没有参照物的。所以往往需要有很强的安全背景与不断的试错调整才能开发出最好的安全产品。甚至在很多时候,沟通交流与思维方式都需要进行转变才能更好的协作,减少代沟和沟通成本。

        安全行业的现状是大部分从业者都偏向于攻防渗透,如果同时拥有强大的开发技能,从业优势将非常明显。在安全产品开发、漏洞挖掘、代码审计上,不同技能的互补显得非常重要,做漏洞扫描器的同时如果在SRC挖过漏洞、做代码审计也能掌握软件开发、做合规审计的人也拥有CISP证书,工作中就会更加得心应手。

热情:兴趣驱动是最长久的

        和安全产品开发一样,渗透测试也需要不断试错,我们往往在各种可能存在漏洞的地方测试数百个请求才有所收获,这需要经年累月的坚持下来,但这种坚持无法速成,而兴趣这位最好的老师就能够促使我们坚持。我对于安全的坚持就是兴趣驱动的。遇到一个线索,我会从傍晚折腾到黎明;又会因为一个突破点,从凌晨摸索到下午。我见过太多优秀的白帽子都是因为热爱,特别是他们能够跨行业地坚持热爱。

成果:没有结果的优秀是空谈

        直观的成果是展示自己综合能力的最好方式,无论是在顶级期刊发表论文、知名比赛中获得好成绩、挖掘众多高质量的通用漏洞、研发Star数非常高的开源项目,还是在安全会议上分享先进理念,甚至突破了行业难题等等。

其它:优秀特质越多成长越快

1.3.2 网络安全人才能力分层

        上一章节讲述了基础的安全从业者应具备的素质,如果你已经具备这些素质,那么已经踏入了安全行业的门槛。这一章将重点讲解下入门之上的能力分层,不同层级更重视需拥有怎样的特质。

各大公司层级情况

        能力分层是一件非标准的事情,很难用特定的标准方式去判断一个人的能力。看哪些方面能力、各方面能力如何衡量、最终层次划分到什么程度,这些都不是本文讨论的内容。以通过各大厂面试并顺利拿到offer为诉求,我们需要搞清楚能力分层,就需要先了解各大厂的层级情况。由于作者能力和视野原因,仅讨论国内情况。

        国内公认的层级体系首当阿里系,通过公开资料可以知道阿里层级体系分为14级,其中又分为P(专家)序列和M(管理)序列,两个序列有一对一对应关系。因此我们仅讨论P序列。

        层级分布情况,各大公司的层级分布并不是正态比例的。有点像政府单位,绝大部分是科员(工程师)、科长(高级工程师)和处长(专家),再向上人数就极度减少。

层级代号层级名称人数比例专业特点人员特质抽象能力代表人物层级要求岗位职责
P4安全专员技术岗位几乎为0-----主要分布在职能支撑部门,比如财务、行政等
P5安全工程师40%技术扎实高效执行-应届研究生及优秀本科生产品某个功能开发、一线渗透测试或安全运营人员
P6高级安全工程师30%能力突出独当一面线-应届博士或优秀本科研究生或社招工作5年内某个安全产品负责人,能够辅导工程师工作
P7安全专家20%专业精深系统思考面+深度-应届凤毛麟角或工作10年内某个安全细分方向负责人,虚线带领一些同学解决某方面问题。比如SDL负责人、某个重要产品负责人
P8高级安全专家10%-视野开阔、由线及面体+深度+广度-一般十年以上工作经验安全下某个大领域负责人,一般实线带人。应用安全负责人、移动安全负责人
P9资深安全专家2%-高瞻远瞩、引领变革深度+广度+高度猪猪侠-BU CISO、某个大领域负责人
P10安全研究员0.1%-布局未来、创造机会-道哥-信息安全负责人
P11-14副总裁、总裁0.1%---韦韬-分管大安全领域高管

2. 网络安全面试经验

2.1 安全招聘渠道

内部员工推荐

        内推是优于招聘网站或猎头的,和找女朋友一样,熟人介绍的比媒婆介绍的要好,更不用说相亲网站的质量了。大企业内部大多数入职的人都是通过内推渠道进来的。对于中高端岗位公司需要支付较高的猎头费用,所以内推渠道优于其它所有。

安全招聘网站

没有合适心仪的目标就上招聘网站。

高阶岗位另辟蹊径

        上面传统的求职方式是多数人的选择,但不是找工作的最好方式,尤其是高阶岗位。多数工作,尤其是好工作,可能并没有在招聘网站公开宣传。因此必须要跳出僵化的传统方式,以下我亲身经验为例,不一定适合所有人,但不失为一种有效路径。

        挑选某一个领域,成为该领域的专家。 需要注意的是,在现如今安全已非常细分了,非安全负责人或安全架构路线不建议将领域范围扩太大。需要做的是明确自己细分领域,成为该领域专家。领域越细分,越容易成为该领域的佼佼者。

        通过自我营销,建立同业人脉。 仅仅成为领域专家还不够,有太多更加努力的人、更加聪明的人、背景更好的人,我们需要突出自己,想到该领域时就能想到你,扩大自己同业人脉和声誉。作为安全从业者,可以通过创造有价值的内容,比如可以通过参加安全会议分享有见地的观点、系列博客、开源项目、制作视频、写书、写文章、挖0day、刷排行榜等等许多方法来提高你的声望,迅速让同业人员认识你,积累起知名度,并和大量背景相似的人建立起良好的人际关系。这是一个缓慢的过程,播种价值,收获声望。

        让工作找上门来或水到渠成,而不是自己去找工作。 此时的你是领域专家且颇有声誉,会有不断的猎头和同行主动找上门来。当人脉中有相关岗位需求或遇到该领域问题时,大家往往会想到你。当恰好他们听说你也在找工作时,一定会优先拉你进他们团队。

        我自己其实就是个典型,通过不断的参加各种安全会议分享我的经验、实践和见解,并把一些有价值的项目开源出去,认识了一大批安全行业专家。后来由于当时所在公司蘑菇街业务不景气,希望换个更大的平台,于是我和业内几个朋友透露了希望换工作的想法,就有多位业内朋友帮我物色岗位,也接触了几家大型互联网企业。恰巧此时蚂蚁集团一位资深安全专家在组建网商银行的安全团队,得知我有换工作的想法,随即一拍即可,有一号位的认可后续的流程就很顺利的通过了。后来,我才得知,在我入职前招聘其他同学时,有个面试问题是你业内的偶像是谁?居然有两位同学都提到我,相信这件事在我面试过程中极大增强了面试官对我的声誉的信任。

2.2 优秀的简历是最好的敲门砖

简历是一切的开始

        在以前我对于如何写好简历并不是很在意,觉得信息写全了就够了,重要的是自己的实力,因此并未在简历上下太多功夫。直到我成了面试官,看了太多太多简历后,绝大多数人的简历简直是惨不忍睹。好的简历能让面试官看的时候就心里给你Offer了,差的简历面试的机会可能都没有,哪怕你真的很有实力。这好像是IT从业人员的同病,也许代码写的很好,但简历或者PPT一般都是一塌糊涂,对于怎么写好简历并没有什么研究。

        面试季的时候,面试官会收到大量的简历,他需要快速的筛选简历判断是否适合岗位要求,在你的简历也许只扫了一眼,就会对你有一个初步看法。接下来再粗略看下每部分内容,就会决定评估不通过或是心里默许你肯定能拿到Offer。简历就是广告,需要在一两页纸上呈现你的优势,把自己销售出去。

简历基本要求

讲清楚你的价值,而非堆砌信息

        这其实有点像工作中晋升时的述职答辩,面试官并不希望看到你做了各种大大小小的事情,而是关注你是否具备了下一层级能力。简历也一样,它的目的并不是告诉面试官你到底干了什么,而是你的价值是什么,他为什么要招你而不是别人。因此千万不要堆砌各种信息,让简历变得臃肿不堪或多无用信息,要想让面试官在其中发觉你的优势不如简洁明了的体现你的优势来的有效。

        如何在这页纸上讲清楚你的优势,说服对方失去你是巨大损失。你历史的技术能力、做过的业绩、参加的比赛、作出的产品、参与的演讲等等是你能提供的价值基础。更关键的是你需要弄清楚对方缺什么,突出你有什么而别人没有。

找专业的人给你的简历提意见

        相信绝大多数人看完我前面的建议后,自己的简历质量会有所提升,但还是会有各种问题。所以建议最后一步是找一个专业的人给你的简历提提意见。相信我,看过上千份简历的人,只需要一眼就知道你的简历有什么问题。不要觉得麻烦别人,这种重要的事情上值得你去找他们帮忙,他会影响你的工作、薪水甚至你的职业生涯。

        当然要注意,前提是你找到专业的人。不需要找文采好的,这不是写小作文。更不要找网上那种帮润色简历的人,他可能是找不到工作才做这行的,仅能找出一些细枝末节的问题或空而有理的建议。你需要的是现实中对他人简历起到决定性作用的人,这类人往往是本行业资深的专家或者招聘领域的资深HR,他们才是你的目标人选。身边没有也没有关系,可以问问身边的朋友有没有推荐的,尤其是你身边的朋友可能受过他的帮助。

简洁明了的简历模板

TODO 补充简历文件

2.3 一些通用面试经验避免重蹈覆辙

面试也是一项技能,可以去避免前人踩过的一些坑。

2.3.1 企业面试官考察点

了解企业考察逻辑,才能有的放矢。在企业视角到底需要什么样的人才?基础能力+成果+热情缺一不可。

        面试官往往会通过STAR面试法、行为面试法等方式来判断你过去做的事情的真实性和能力体现,以此来预判你之后的能力表现,了解这些面试方法能够帮助我们更加清楚面试官希望听到何种回答。

        此外面试官经常会用到冰山模型来挖掘应聘者的能力、动力和潜力,对于表象的知识经验以及专业技能等可以培养的部分,只要达到基本要求即可,但对于潜在的态度、品质、动机等难以改变的部分会更加看重,必须满足。

        面试官最终的判断依据其实会有很大感性部分,在如此短的时间内其实很难全面客观的评判。多数公司通用的录用判断标准往往是宁缺毋滥,凡是应聘者有明显缺陷都难以最终通过,除非特长特别明显。让面试官犹豫的人也容易被放弃,往往这类面试者是各方面比较平的,没有突出的亮点。

        另外面试官对应聘者的评价往往是相对的,同一个面试官往往会使用相同或相似的面试题目来比较你和其他求职者。若在相关问题中回答较好,面试官则会和历史面试者有一个比较,从而会对你有一个更好的印象。

2.3.2 应聘者面试过程经验

        大多数公司的面试方式都类似,以下从面试的不同阶段准备了一些关注点供参考。

提前准备
面试过程
面试结束

2.3.3 甄别团队和同事

        前面章节有讲到如何选择企业,当企业符合自己期望后,并不代表企业中每个团队每个人都符合自己期望。尤其是在大公司里,各个团队的氛围、能力、价值观都会相差比较大。

        在面试过程中,面试官往往是自己以后的同事、领导和HR,面试既是企业考察自己的过程,也是自己了了解”企业“的过程。理解面试是双向考察,面试官在面试我们的同时,我们也可以通过交谈、询问来观察面试官,去判断他的基础素质和专业素质,了解自己将在一个什么样的团队和一群什么样的共事。

        其实完全用不上这么复杂的方式来实现这个目的,如果我们在目标团队中有认识的人就简单多了,他的长期感受会比短暂面试的判断要准确全面的多,通过向他们打听是最高效准确的办法。但更多的人是没有这方面人脉资源的,因此甄别面试官就显得尤为重要,在这里我会教大家一些判断面试官素质的经验。这里的经验侧重点并不是让我们去判断面试官的能力水平,而是让我们学会甄别那些不好的团队和人。

        上面很多逻辑是一些大家都懂的道理,倘若没有准确的甄别出来,会导致你进入到错误的团队和错误的人共事,所付出的成本是极高的,同时自己会陷入巨大痛苦之中。你有可能遇到团队氛围不好死气沉沉、办公室斗争尔虞我诈、领导情绪不稳定骂人是常态、团队同学陷于日常繁琐事务没有成就、天天加班绩效也不好技术也没成长还看不到希望等。

3. 网络安全面试题目

        了解到许多面试官或应聘者在使用本文原文的问题或按提示逻辑进行回答,这并非本文初衷。虽本文中的问题对面试很有帮助,但更期望其能帮助面试官识别面试者的解决问题的能力,帮助面试者体系化回答。尤其对于一些常闻到的脑筋急转弯或工作中用不到的问题,虽然并不是好问题,但却经常被问到,可避免面试者因为这些问题导致面试失利。

3.1 基础素质问题

        提示:不要有太多消极负面东西,点到为止。提及原公司看法时,应当客观正面,切勿有个人情绪,尤其避免对上司、同事的抱怨。

        提示:如果面试官未谈及薪资问题,切勿主动提及。回答薪资相关问题时,在保证自己基本利益的前提下,表达自己的诉求,但一定不要把话说死,给后续谈判保留空间。相信企业会给自己一个合理的回报。

        提示:真实表达。可从乌云、翻墙、写技术博客、参与开源、常浏览的网站、关于黑客电视剧、关注业内牛人等角度。

        提示:如何回答自己的不足是个更难的问题,可以从几乎所有事情都有积极和消极的角度来回答。比如做事情擅长抓重点,但细节跟进不够好。

        提示:可以选择有关企业发展、所应聘岗位定位相关问题(比如安全与研发比例、你为什么来这个公司等),让面试官能感觉到你在关心公司发展和岗位兴趣。有见地或有深度的问题,侧面反应自己的技术功底。避免问题过多过细,也避免没有问题。

3.2 安全面试题目

        如何有效的甄别一些滥竽充数的人,最直接的莫过于Show me the Shell。但这一步往往被安排在试用期,在此之前最重要的肯定是面试这道坎。安全圈的东西行业内的人谁都能聊一点,所以一轮面试一定得一线安全技术负责人亲自把关,深入的问细节来判断。但同时也建议根据实际岗位需求来平衡对候选人的要求,避免出现面试时问造火箭的技术,进来后拧螺丝钉。

        问答是更好的表达我的看法的方式,由于自己并不擅长文字,还没有能力将散落在脑海中的安全知识系统性展开著书。于是我一直思索如何将脑海中千头万绪的碎片安全知识整理成严谨准确时效性强且可持续更新的文字,经过一段时间实践,非问答模式莫属。

        每次面试都会从本文题库中选择一些题目,通过和面试者双向交流后,不断补充新的题目和修正完善答案,确保题目严谨准确。同时日常工作中遇到的各类安全问题也成为面试题目的重要补充来源,确保题目时效性。通过一个个具体的安全问题,来表达我对安全的理解,同时能给正在阅读的你提供一点收获,是我持续更新的动力。

        同样从应聘者角度,题目固然重要,但也不应过于寄希望于通过刷题的方式来提升面试成功率。不必追求每一道题都会,一些问题答案也许仅仅是你没经历过,同时这些你不会的问题也是你可以提升的地方。更应该通过回答问题表达自己的逻辑思维和深入思考,体现自己优秀特质,让面试官相信你遇到任何问题都能迎刃而解。

        在正式开始前,需要明确的一点是,大多数公司是没有所谓的面试问题清单的,每个部门、每个面试官都会挑选自己的面试问题,因此并不存在某个公司的最新面试题目。但各类问题本质是相同的,理解各方向的常见问题可大幅提升自身知识体系和深度以及面试成功率。

3.3 应用安全岗位

漏洞挖掘、利用及修复

    挑选两到四个不同方向常见和不常见的漏洞,就漏洞原理、利用方式和修复方案进行提问,然后根据回答的情况进行详细深入的二次提问。

信息收集

安全蓝军岗位

常规应用漏洞

        提示:JSONP在利用时可通过Meta标签去掉Referer,因此在修复时需要主意Referer为空情况;

        提示:原理略;彻底解决该漏洞可以分析根因,Fastjson主要因为Autotype导致的、Log4j主要因为Lookup,可考虑移除经常出现问题的代码,制作内部精简定制版本。或者通过应用运行时防护(RASP)。

业务逻辑漏洞

        提示:考察对业务逻辑的理解,如果只局限在越权则比较浅。凡是和业务比较贴近的漏洞都算业务逻辑漏洞,比如身份校验相关的风险(未授权访问、非正常账户态、身份可枚举、水平越权、垂直越权等)、接口逻辑实现不一致(不同协议实现不一致、同类产品不同逻辑、不同阶段逻辑不一致-流程绕过)、不安全的可信端数据(APP数据)、预设要求不符合(依赖条件不安全-业务校验属性设计、人工客服容易被骗-业务流程设计)、滥用合理业务需求等等。

        提示:此题考的是当账户状态改变时,由于各个业务逻辑并不一定严格遵循该账户状态的要求导致的还可以继续进行一些预期外的操作。一般账户状态在注销、禁用、风控、司法冻结等时候,会出现该问题。

        提示:伪造他人身份态。

        提示:Cookies、自定义Header、URL Path、URL Param Value、URL Param JSON、Body Form、Body JSON、Body XML、自定义协议的自定义字段等等。

        提示:一般针对数字类型的越权可以通过递增枚举数字,根据响应情况可以判断是否存在越权。此外还可以通过两个账号相互访问对方创建的资源来判断,可避免不连续的数字导致的遗漏。

        提示:数字加减遍历只能针对数字类型资源ID,且只能针对连续的数字,遗漏情况较多,且对业务有损(会导致操作或查询他人数据)。通过两个账号的方式,可以不用遍历,不容易被发现,也不会遗漏,对他人数据无影响。当然,在某些场景下,数字加减遍历方式相较于换账号方式更有优势。比如在多个参数的接口中,有N个参数是有校验和当前账号关系,但有一个参数未校验。此时用换账号的方式就得将多个账号都调整为正确参数后再测试问题参数。而+-方式则可以直接测试每一个参数。

        提示:除了修改按钮属性使其可用或分析灰色功能对应的后端接口,直接调用接口外。如果能考虑到不同协议的实现可能不一致就更加全面了,比如APP上不能用,PC上是否就能用了,PC也不能用,通过各种协议(HTTP、WSDL、REST、GraphQL)的API调用是否能绕过。

        提示:流程绕过漏洞可以理解为不同阶段逻辑实现不一致,比如创建和后续状态变更时的要求不一致(一个操作创建时权限校验很严格,结果修改的时候的权限要求却不一致)、一个流程某个步骤的要求不一致(第一步要输入密码,结果第二部下单的时候并未强校验前面输密码是否完成)、并发逻辑控制(开多窗口同时支付,使一个优惠多次使用)、特殊时期的逻辑绕过(大促时期的校验机制降级)等等。

常用协议漏洞

        提示:通过Content-Length对HTTP请求体的分割;

        提示:DR:DNSSEC可用于确定源域名的数字签名;PTR:常用于邮件服务器的黑名单判定,邮件服务器每天接收大量来自不同IP的邮件,如不加判断就接收会导致存在大量的垃圾邮件。通过查询发送方IP的PTR记录可以看该IP是否有绑定域名,从而拒收未绑定域名的IP发送的邮件。;TXT:对域名进行标识和说明,用于SPF可反垃圾,也可用于搜索引擎判定域名归属。

        提示:好处:使用时更改解析记录即可,不用新增解析记录,全网同步速度会更快一些;坏处:1.1.1.1是某CDN的IP,可导致站点被恶意接管风险;

        提示:风险:state没有设置、没有验证、可多次使用或被设置成了其它功能;授权码可多次使用或无时间限制;授权更多的权限;Client Secret泄漏;绑定三方登陆,攻击者通过他人邮箱注册账号,此时还未验证邮箱有效性(1. 邮箱所有者通过使用邮箱注册时,验证邮件将会使攻击者注册的账号邮箱绑定成功。2. 邮箱所有者通过三方账号注册时,需要绑定邮箱,此时将会和攻击者之前账号绑定成功)。攻击者控制某个账号时,偷偷将账号绑上某个第三方账号,无论账号如何改密码都可以通过三方账号登陆控制该账户;修复:redirect_uri验证;access token仅能使用一次;避免读取当前用户的session直接绑定;state随机hash,并在服务端校验;全程使用HTTPS;平台中可给用户发送消息的地方加强域名过滤;

漏洞测试软性能力
漏洞处置

漏洞自动化发现

白盒SAST
黑盒DAST
灰盒IAST

安全评估与解决方案

安全评估

        提示:传输窃取->HTTPS;未授权访问->API调用密钥;请求篡改->请求签名;请求重放->加随机数的请求签名;

        提示: 秒时间戳在防重放攻击时,会存在一秒内可重发多次问题,可增加一个随机数或使用毫秒随机数。

        提示: SHA256存在彩虹表碰撞问题,HMAC SHA256简单理解相当于加盐了。

        提示:使用高强度的不可逆的Hash算法,且加动态盐。具体成型算法可以使用pbkdf2、bcrypt、scrypt等。

安全方案

        提示:密钥暴露面越多,风险越大:密钥硬编码在代码中导致的直接结果就是代码在哪里,密钥就在哪里。研发人员电脑上存在密钥,如果电脑被攻击则密钥也会被泄漏。其次研发人员会因为没有安全意识,将代码上传至各类私有云盘或家里电脑又或是U盘中,导致风险面增大。更有甚者,将代码上传至GitHub,而忽略了代码中的硬编码密钥,从而被恶意着利用;**攻击者拿到硬编码密钥后攻击成本较低:**攻击者无论通过什么方式拿到你代码,首先就会去看硬编码密钥部分,尝试去利用这些代码中的明文密钥,比如存在邮箱密码则会去尝试登陆你的邮箱进一步渗透挖掘邮件中有价值的内容,有FTP账号密码则会尝试连接FTP挖掘FTP Server中有价值的文件;**硬编码意味着你不会去变更它:**当密钥硬编码在代码中时,改动密钥的成本就会增大,每次改动密钥时你需要额外进行应用发布和测试。而密钥的安全策略中,定期更换是最重要的因素,因为你无法知道在何时何处密钥泄漏过,因此定期更换密钥能降低风险。解决方案核心点在于密钥需要和代码分离,尽可能少的让密钥被人接触到。

前端安全

        提示:

        提示:setTimeout方法不在 JavaScript 的规范中,大多数运行环境都有内建的调度程序来支持这个方法,可以支持当前页面发生跳转后还能执行之前的JavaScript。

移动应用安全

提示:

3.4 基础设施安全岗位

网络与主机

        提示:Java JDK自己维护CA证书,默认不使用系统CA证书,可通过keytool导入CA证书;Python下各包CA证书逻辑不一致,可通过设置系统环境变量CURL_CA_BUNDLE让所有包信任系统CA证书;nodejs默认不信任系统CA,可通过设置系统环境变量NODE_EXTRA_CA_CERTS让所有包信任系统CA证书;

办公设备

3.5 威胁应对岗

威胁安全认知

流量采集与清洗

风险识别与应对-网络侧

提示:特征从上行比下行大、长连接、心跳、没有js等资源引用等方面来看。

风险识别与应对-主机侧

风险识别与应对-应用侧

威胁溯源

威胁情报

3.6 数据安全岗

安全责任与意识

提示:避免低级问题、避免问题重复出现、纠正错误观念(理解自己的责任和义务)、了解安全团队工作,打造团队形象等。

数据采集使用

权限

提示:ABAC:集中化管理;可以按需实现不同颗粒度的权限控制;不需要预定义判断逻辑,减轻了权限系统的维护成本,特别是在需求经常变化的系统中;定义权限时,不能直观看出用户和对象间的关系;规则如果稍微复杂一点,或者设计混乱,会给管理者维护和追查带来麻烦;权限判断需要实时执行,规则过多会导致性能问题;

密码学-加解密相关

类型国际算法国密算法
对称算法AES、DESSM4
非对称算法RSA、ECDSA、ECDHSM2
消息摘要算法SHA256、MD5SM3
传输层安全协议TLS、SSLTLS1.3+国密单证书
国密证书sha*WithRsaEncryptionSM2-with-SM3

提示:不安全:DES、RC4、MD5。不够安全:3DES。另外AES、RSA秘钥长度对安全性影响也较大。

提示:加密速度、密钥传输保存、被加密的数据长度等角度展开

数据安全综合

3.7 合规审计岗

安全合规

3.8 安全蓝军岗位

蓝军认知

信息收集

**提示:**查询一个绝对不存在域名的A记录,比如enumsubdomain-feei.feei.cn,根据是否返回IP来判断是否是泛解析(若返回IP则是泛解析域名)。

提示:会导致IP的遗漏,有些域名为增加网站的访问速度,会针对不同线路(电信、联通、移动、教育)解析不同IP。

提示:内部域名,内网接口使用的域名、测试域名等,比如feei.cn;外部域名,对外使用的域名,可以选一些风险较高的,比如mail.feei.cn;代码版权,代码头部注释中的版权声明,比如Copyright 2018 Feei. All Rights Reserved;主机域名,服务器HOST域名,比如goods.db.feei.host;代码包名,Java代码包名,比如com.feei.goods

**提示:**新浪微博私信、知乎、搜索引擎、公众号、LinkIn、天眼查、Whois、上市财报等渠道

漏洞原理

漏洞原理部分同应用安全岗位

攻击入口

出网

行为

3.9 安全开发岗位

Java基础

网络与多线程

数据结构与算法

业务基础

业务安全

3.10 进阶面试问题

安全架构方向

可以挑选的问一些前面四星及以上的问题,以确保在各个方向上比较均衡

        提示:大安全:隐私与合规安全、业务安全、信息安全;信息安全:数据安全、基础设施安全、应用安全、蓝军、安全研发;

        提示:纵深防御不是简单的堆叠多层,而是利用好每一层的优势来降低整体被突破的可能性;每类安全产品有其优势和弱势的地方,我们要利用好优势并使用其它安全产品来弥补弱势;

        提示:由外而内;先底后上;能口不点;

        提示:宁愿漏报也不要出现大量的误报,当出现大量的误报情况下会导致真正有用的东西埋没在报警消息中,宁可牺牲部分漏报也要保证足够好的误报。

        提示:目前整个安全领域都在从基于攻击特征的黑名单专项基于行为的白名单可信,黑名单加不完永远有各种遗漏和绕过的问题;能用白名单(除了白名单都为黑名单)解决的不用黑名单,比如暴露在外网的只允许80/443端口,其它端口发现一例关闭;

4. 网络安全行业趋势

        IT转向DT、万物互联和地缘政治摩擦的大趋势下,无论是国家、企业还是个人层面,安全将前所未有的被广泛重视。各类细分安全法律、监管要求、行业标准出台,个人隐私保护意识崛起,产品的安全性也逐渐成为各企业的竞争优势。随之安全岗位需求将越来越多,安全从业人员数量也大幅增长,安全对抗的深入导致安全细分领域越来越多。

        这些意味这什么呢?在我接触安全那会,多数安全从业者都能凭借着兴趣爱好就能在行业内做的不错,先发优势让我们很容易做出一些成绩,甚至跨子领域的成绩。但参加最近几年的校招能明显的感觉到越来越多的专业精深的安全人才,已经逐渐脱离了仅依靠兴趣爱好就能做好的时代。

        作为新人我们应该把握好这个历史时机,打好安全基础、深入研究新型领域、快速学习他人经验、把握每一次成长机会、扩大安全影响力,安全的未来是你们的!