通过本篇文章,您可以了解一个web安全从业人员所具备的大致知识面,同时我也制定了一个循序渐进的学习计划,用以帮您找准自己的定位,并可以自己制定适合自己的学习计划。
以不求甚解的方式去看书,基于兴趣选择优先学习点,培养一个星期看完一本书的能力。
在我看来,人类的知识都是具有阶梯式、层级式的特点,如果不了解下层的知识面,那么对于上层知识面的学习将会止于皮毛、浮于表面。对于web安全来说,我认为有5大块知识面是必须要掌握的,其层次关系如下图:
最下层的是os(操作系统)与db(数据库)。中间层是web,也是最重要的贯通上下的知识面。最上层的是安全攻防的知识和系统开发的知识,二者是纠缠在一起的上升螺旋。
虽然知识面是层级式的,但是对于我们的学习来说,不应该抱有先把下层的知识学会、再学上层的知识。我推荐的学习态度是不求甚解。因为现今是知识大爆炸的时代,你不必为了一个问题而死转牛角尖,这会降低学习效率。正确的做法是快速获取主要的知识,然后进入下一阶段的学习,那些未明白的地方,总会在未来的某个时刻或触类旁通、或回头重学,到了那时,你对这些问题的掌握程度,将是异常的深刻。
基于这种快速学习的方法,我给您的学习计划是这样的:
每个阶段所包含的学习内容和时间安排如下:
序号 | 阶段 | 花费时间 | 学习内容 |
---|---|---|---|
1 | os基础知识 | 4天 | os基础操作,os文件系统,os权限系统,os用户管理,常用系统命令 |
2 | web基础知识 | 2天 | http协议,html&js&asp&php&jsp基础知识 |
3 | 安全攻防基础知识 | 7天 | 常见安全漏洞的典型利用,常用安全工具使用方法 |
4 | db基础知识 | 1天 | 常见数据库简介(oracle、mysql、sqlite),常用sql语句 |
5 | 安全攻防进阶1 | 7天 | 渗透测试方法论,安全漏洞深入分析 |
6 | web深入学习 | 15天 | https协议,搭建个人web服务器,深入学习html&php&js |
7 | os深入学习 & db深入学习 | 15天 | 程序进程线程,网络通信与端口,linux & 深入学习oracle |
8 | 系统开发基础知识 | 15天 | 学习python |
9 | 安全攻防进阶2 | 15天+ | 大量的安全实战,编写poc,学习安全工具的插件及高级利用 |
10 | 系统开发进阶1 | 15天+ | 学习java 基础知识,java web开发 |
11 | 安全攻防进阶3 | 保持学习 | 根据自己的爱好,深入某个领域 |
12 | 系统开发进阶2 | 保持学习 | 根据安全攻防的需要进行学习 |
合计 | 96天+ |
从上面的计划可以看出,对于枯燥无味的理论知识,刚开始只安排了2-3天的常识学习,马上就是动手操作性比较强的安全攻防基础,这可以极大的激起您学习的兴趣。这也是我推崇的学习方式,基于兴趣。当您对常见漏洞的利用方法了然于胸、并不断使用的时候,您肯定会产生很多疑惑,这时候再回过头去学习下层的理论知识,您会产生恍然大悟的畅快感,如同遮天的乌云忽然间就烟消云散了。
常听人说看一本书看了半年还没看完,一看到厚厚的书本就产生畏惧。其实您低估了不求甚解的学习效率,一个星期绝对可以看完一本书的。重要的是集中注意力,不要死转牛角尖,不要以为某个知识点没有明白就会错过了,我明确的告诉您,以后您还会再遇到那个知识点的,而那个时候稍加一想就会了。
拿出纸和笔,把您自己已经会的知识画成一个个的圈,然后选择和您已有知识关联最大的知识面去优先学习,因为让零散的知识点尽量融合成一个整体是最有效率的。然后挑出您最感兴趣的知识面去次优先学习,最后参考我给您的计划,制定您个人的学习计划。并将其打印出来,然后按部就班的学习吧。