本文共 3.1k 字,预计阅读时间 10 分钟。
这是一个给信息安全专业同学、并致力于向甲方安全发展的技能清单。从甲方从业经验,以及最近面试一些同学的体验出发,我梳理了一些内容。这些内容可以在约两年时间内,让一个会编程但是不懂安全的小白完成不错的发展。
甲方信息安全 vs 漏洞挖掘 vs 研发
甲方信息安全 = 40% 安全 + 30% 研发 + 20% 架构 + 10% 管理沟通。
首先我们明确,乙方也是有信息安全研发的。但是乙方信息安全研发人员中,很大一部分会在 1 到 2 个工作经历后进入甲方,他们会将乙方的研发经验(甚至完整的工具和结构)带去甲方。因此我们这里对比的是工作是漏洞挖掘,即以挖掘外部或内部漏洞、安全服务为主的乙方工作。
和漏洞挖掘相比,漏洞挖掘对安全的要求是远远高于甲方的。但是通常来说,精通 Web / 二进制 / 区块链 等任何一个部分即可成为合格的漏洞挖掘工程师,他们也会被称为信息安全研究员。他们会了解一些常见框架的搭建、运维但是不一定需要很高的二次开发和架构经验。
和研发相比,甲方信息安全有了安全这一加成,在某些一线大厂的面试中,会大幅降低对研发技能的要求。比如头条系算法题相对简单,阿里系系统题相对浅显。但是研发技能其实是非常重要的一部分。并且在安全达到一定水平后,快速构建一些服务和系统是工作中非常令人愉快的事情。
技能前置
技能树是有一定前置的:
- 基本数据结构和算法。想一想数组、结构体都会用吗?二叉树会不会构建?不熟悉不要紧,给一个 Google 能很快写出来就好了。
- 会写代码。语言最好是 Python 或 C/C++,虽然我大一的时候只会 Pascal。选这些语言的好处是:不关注底层而关注代码逻辑,资料多,容易有成就感。这或许是持续学习的好帮手。
- 知道安全是什么。只要知道安全不是盗一个 QQ / 支付宝 / Steam / 银行卡或者删库跑路就行。
- 有基本计算机科学素养。会装虚拟机 / 开启命令行 / 不要在 helloworld 里写中文标点等等。
此外:
- 甲方安全通常以 Web 为主,二进制有很强基础并且对 Web 不太感兴趣的同学建议移步漏洞挖掘工程师。当然,APP 防护方面和最近的 IOT 安全热潮对二进制安全人才需求还是很大的。
- 二进制要不要学?当然要,但是这只是加分项。
技能规划
我们分为四个半年,并且在之后做出一定的规划。规划以技能点给出,具体学习资源可以自己寻找或交流。
值得注意的是,这个技能规划可能是偏高要求的,在两至三年内完成都是正常的,注意劳逸结合(避免头秃猝死)。规划前紧后松,是为了不慌不忙。两年内就完成可以说是天赋异禀的大佬啦!
初次工作前目标简历
- 熟悉 Python(脚本语言很重要),会使用 C/C++/Golang/Rust (其中任意一种,只会 Python 给人一种脚本小子的感觉)
- 熟悉 Web 安全,有一定的实战经验(这里可以说一些工具)
- 可以较熟练的开发简单的安全工具,实现指定的安全功能
- 参与过网站开发,有一定前后端经验
- 了解分布式平台
- 会使用 Git 管理版本
初次工作后目标简历
- 熟悉 Python,会使用 C/C++/Golang/Rust 进行项目开发(选两个吧),选用适当的数据交互方式黏合不同语言开发的组件
- 熟悉 Web 安全,有中小型安全产品开发经验
- 可以快速开发安全工具,投入简单测试和迭代
- 在分布式平台和集群上有过开发经验
- 有一定的项目架构经验
1-A
主线:Web 安全
支线:如何 Google / 运维 / 英语
技能点:
-
Web 安全
- 了解各种基本漏洞。我想安全知识是安全专业最好找的内容了
- 根据已有靶场如 VulHub 完成复现并了解原理
- 多用 Python 写写脚本,找轮子和调库也是有技巧的
- 尝试自建靶场
-
如何 Google
- 习惯土啬外生活
- 多和学长学姐交流安全经验啦
- 安全行业相关的也可以开始了解,早点知道未来的 JD(Job description)就很棒
-
运维
- Linux 命令使用技巧(但是不需要 Bash 编程)
- 一个网站应该如何部署。推荐买一个域名,买一个 VPS,全自动脚本建一个静态 Blog
- 如果网站被攻击了,怎么修复?
-
英语
- 建议过一下四级
- 习惯土啬外生活
1-B
主线:前后端开发(后端为主)
支线:安全 / 算法 / 运维 / 享受生活
技能点:
-
前后端开发(后端为主)
- 了解一个网站的后端是怎样的。推荐从 Django 等 MVC 体系框架开始,这样包括数据库和一些模板渲染都学会了
- 知道什么是并发,什么事异步
- 学习 Nginx 和 Apache 配置技巧,包括反向代理 Python 或 JS 起的后端,和 PHP 的对接,静态资源调配
- 学习一下热更新技巧,有助于后期更好的优化架构(最好给大家用一用,就会有人提需求了)
- 加一点前端开发,Bootstrap 就好,Vue / React 更佳
-
安全
- 安全技能进阶,最好实战一下(注意安全.jpg)
- 试试看自己写的网站有没有逻辑漏洞?(最好给大家用一用,而不只是 demo)
- 二进制基础入门:什么是指针?什么是堆和栈?
-
算法
- 不一定要做到默写(实际上默写毫无用途),但是需要真正理解
- 图论学一些,可以适可而止(除非立志参加 ACM)
- 虽然以后不一定用到,但是多多益善
- 量力而行,有 ACM 奖项更佳
-
运维
- 学习一下优雅的自动部署
- 学习一下优雅的看 Log
- 网站里加一下其他功能,学习如何通过 JSON / Ajax / Thrift / Protobuf 等完成跨语言数据交互
- 了解一下集群架构
-
享受生活
- 总要有点爱好嘛,压力太大不适合长期学习(即便很喜欢学的内容)
- 毕竟学了一点东西了,不会因为无知而飘飘然,所以不要担心太颓,到这里已经很棒了
2-A
主线:安全开发
支线:安全 / 分布式 / 了解企业
技能点:
-
安全开发
- 安全开发和安全不一样
- 比如写一个爬虫,自动扫 XSS 或者写一个大马,不仅有很多新姿势,或许还真有用途(继续注意安全.jpg)
- 最好写一写目前不太多的工具,不一定多完善,但是很用心的那种
- 如果有机会,学一点基本的机器学习(请不要沉迷炼丹)
- 这一部分开发经历是初次工作前简历的一个亮点
-
安全
- 安全当然继续要学
- 认识一些安全圈大佬,不是吹逼套近乎,而是扩展一些信息面
- 如果有可能,多去一些竞赛,做一些培训,至于会议什么的其实没什么用
- 了解一下黑灰产?毕竟这才是甲方的敌人
- 有机会还是多实践(千万注意安全.jpg)
-
分布式
- 是时候做一个大数据工程师了
- Spark(可以选用 PySpark)等计算平台先用一用
- 尝试构建一个本地的 K8S 集群
- CAP 学一学,模型学一学
- 这也是初次工作前简历的一个加分项
-
了解企业
- 有哪些企业,想去哪些企业
- 想去的企业需要什么技能(这种在最初也提到过,但是最新的信息更加准确一些)
- 如果初次想去初创型小企业,请继续强化开发技能,包括一些开发流程如 Git / CI / CD
- 如果初次就想去大企业,准备刷刷题
2-B
主线:准备第一份工作
支线:基础知识 / 开发 / 客制化需求
技能点:
-
准备第一份工作
- 现在已有的技能已经可以达到初次工作前的目标简历了
- 但是不要写太满,**“这人居然还会这个” **比 “这人原来只会这些” 的评价要好很多
- 不一定要投大公司,小公司可能会有更加独立的开发经验,在第二份工作前,大公司的螺丝钉和小公司的独立开发者区别不大,甚至小公司的独立开发者更吃香
-
基础知识
- 或许你大学因为沉迷安全和一些技术没有好好学习,请尽快补一下
- 面试毕竟很多东西考不出来,在校生还是会以基础知识为主。如果不是经历非常牛逼,还是乖乖地看一看书
-
开发
- 随便看一看,补缺补差
- 最好做点记录,至少告诉面试官:我在学习
-
客制化需求
- 如果拿到 Offer 了,了解一下公司的技术栈
- 更快上手会让大家对你更加赞赏
第一份工作后
主线:架构
支线:开发流程 / 管理 / 生活和行业情况
技能点:
-
架构
- 我需要做什么
- 别人希望我做什么
- 如何接受或拒绝需求,为什么要这样做
- 可配置化、未来扩展、部署方式怎么确定
- 如果是分布式平台,下发、热更新都会是很棒的挑战
-
开发流程
- 这是一个工作和独立开发的巨大区别
- 开发流程、开发规范看上去繁琐冗长,但是是有效的
- 以后的工作中可能会学着接入底层流程,或者指定流程,所以好好学习借鉴
-
管理
- 如何管理自己的排期
- 如何快速告诉别人自己在做什么,已经做好了哪些
- 如果可能,如何安排适量工作给另一个人
-
生活和行业情况
如何实现财富自由(笑)- 实际上是,考虑哪些经验是不依赖于公司的,而是自己真正可以带走的
- 以及那些经验可能更加拥有含金量
- 行业发展如何?会不会考虑转行?
结尾
我想现在已经可以更新第二份简历了。此时根据自己规划,更新完简历后选择下一家公司或者继续做下去,随后的发展只有自己独特的道路了。
目前我没有跳槽的打算,不过实际上我刚刚更新自己的第三份简历,这一份可能勉强达到了文中【初次工作后目标简历】也就是第二份简历的水平。当然我也不是在这个领域发展最快或者最好的那一位,因此我不打算写出任何一本推荐的书、资料或者推荐的公司之类,如果想要了解可以从别的方面广泛的收集这些信息。我只是在想,如果在我大一开始时,有人给出这样一份简单明了的规划案例,我或许会有着更好的目的性去学习知识和技能。所以我在此时此刻写了这份文档。
不过,我很享受我的大学生活(大雾x(或许是因为日常都在浪和划水,以及低分飘过一些课程)。
希望大家可以在甲方信息安全研发的道路上一帆风顺。