网络安全的工程师并非仅仅是在电脑前“寻找几个漏洞“这么简单的事情。真正困难的是将漏洞转化成为风险判断,然后把风险转化到防护方案之上。
有一个人打开招聘的要求,看到了Web安全,渗透测试,代码审计,马上就去背工具的名称,安装好了环境,可是连一次完整的请求经过了什么网络设备都不知道。
基础不牢的话,工具就越多,就越容易让自己陷入到按钮里。
计算机和网络的基础首先要站住,协议,系统,网络设备,权限和数据的流转,至少得能看懂,讲清楚。
Web安全往往被视为入口,由于众多企业业务均运行在Web上,因此工程师需要了解SQL注入的各种不同表现,如报错注入,布尔盲注,时间盲注, DNSLog盲注二次注入宽字节注入伪静态sql注入。
看到页面不报错,并不意味着没问题。
SQL注入,XSS,XXE,SSRF,命令执行这些没有回显的场景,关键不在于“进去”,而在于能否通过合规测试来证明问题是存在的,并且判断它会对什么产生影响。
这一步的考验是思路,而不是复制一串命令。
在进行PHP代码审计的时候,危险函数仅仅是一个入口,真正需要关注的是参数是从哪里来的,经过了什么样的过滤,最后是否进入了敏感的操作,并且能够说清楚修复的办法。

只报漏洞,不解释原因和防御,比工程师还差。
工具也需要会使用,但是工具不能代替判断。
外网的渗透,内网的透透,漏洞的手工利用,这些都需要放到授权的攻防的模拟环境里面去练习,可不能把真实的系统当成练习本。
能够独立完成一个项目,包括发现问题,验证风险,整理证据,提出防护措施,能力才能够落地。
网络设备的调试、黑客的攻防、信息的安全和数据的分析,不能仅仅停留在名词上。
更难的一个关卡,就是设计一个网络管理的平台以及网络安全的解决方案。这通常比记住多少个漏洞的名字更能拉近差距。
代码方面的能力也是不能缺少的,Python适合用来写安全脚本。C语言以及PHP能够帮助理解程序和漏洞形成过程,至少需要掌握一种开发的语言。
计算机的专业英语也是绕不开的,代码,产品说明,配置界面里面都有它。
当遇到告警无法排查出来、方案遭到质疑、客户不断追问的时候,能否稳住并且解决问题,也决定了你能不能坚持做下去。
证书能够证明你学习过一些内容,但是不能代替你进行审计、分析、防护。
想要进入这个行业,就不要从学习哪个工具开始,先去补充网络以及计算机方面的基础,然后沿着Web安全,代码审计,脚本开发以及攻防演练一步一步地往下走,学会独立地去说明风险,完成修复,这才是真正有效的技能。