在回答这个问题前,首先,我们要了解何为网络安全。网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不因偶然的或者恶意的原因而遭受到破坏、更改、泄露,系统连续可靠正常地运行,网络服务不中断。
一.零基础学习
在网络安全的学习过程中,基础知识是一个绕不过的问题,Web知识本身就非常丰富,覆盖范围也非常广泛。
首先是大家比较熟悉的浏览器、数据库、服务器;
以及由简到难的HTML、JavaScript和CSS、PHP、Java、.net;
还有从CDN、代理、Web容器;静态页面到MVC;从URL协议到HTTP协议;页面加载到DOM渲染等等。
而基础的学习需要把握一个度,当你选择花很多时间完全掌握这些知识,再学习Web安全时,你的学习兴趣或多或少会失去一些。
1.Web知识过多,容易偏离主题,忘记了初衷,也会逐渐缺乏学习的动力;
2.Web知识过少,基础不牢靠,会导致后面的学习乏力,严重影响网络安全的学习效率
所以,如何把握这个度,是入门者的一个难题。
二. 入门
然而当你掌握了Web基础知识时,你才会残酷的发现你还远远没有入门。 这里给出一些我的建议:
1. 多看书
阅读永远是最有效的方法,尽管书籍并不一定是最好的入门方式,但书籍的理解需要一定的基础;但是就目前来看,书籍是比较靠谱的入门资料。
例如
《黑客攻防---web安全实战详解》
《Web前端黑客技术揭秘》
《安全之路:Web渗透技术及实战案例解析(第2版)》
现在Web安全书籍比较多,因此大家在学习的过程中可以少走了不少的弯路。如果以上推荐书籍阅读有困难,那就找自己能看得进的 Web 安全的书。
当然纸上谈兵终觉浅,不实践一下怎么好呢。
比如大家可以动手尝试一下找到 http://testphp.vulnweb.com/ 的漏洞,对比 AWVS 的结果
2.常用工具的学习
1.Burpsuite
学习 Proxy 抓包改包
学习 Intruder 爆破模块
学习实用 Bapp 应用商店中的插件
2.Nmap
使用 Nmap 探测目标主机所开放的端口
使用 Nmap 探测目标主机的网络服务,判断其服务名称及版本号
3.SQLMap
对 AWVS 中扫描出的 SQL 注入漏洞使用 SQLMap 进行数据获取
实践常见漏洞类型的挖掘与利用方
3.学习开发
1.书籍
《细说 PHP》
2.实践
使用 PHP 写一个列目录的脚本,可以通过参数列出任意目录的列表
使用 PHP 抓取一个网页的内容并输出
使用 PHP 抓取一个网页的内容并写入到Mysql数据库再输出
4.多关注大佬们的博客、论坛、网安的网站和公众号
现在大部分的技术分享都集中化,集中到了各个安全论坛、网站,比较遗憾的是非常不错的乌云已经逝去了两年多了。作为入门,二向箔安全的知乎专栏、微信公众号也是不错的,聪明的同学自然知道关注。