很多公司在招聘自由职业者和长期性的开发者时往往忽略了他们的安全知识,这是个致命的错误。通常在面试过程中,面试官会站在应聘者能否写出优美的代码角度进行考虑,大多数情况下忽略了安全知识——但也不排除在其离开前会提出关于漏洞方面几个粗浅的问题。仅仅如此是绝对不够的!要知道,正因为你的不小心,最终可能会聘请因一位网络新手而给你的代码库带来致命性的灾难,或者至少会让你失望(花费你大量的时间和金钱)。因此,千万不要犯这样的错误!
许多开发者缺乏对安全知识的理解和经验运用。在面试过程中,如果你发现应聘者有这方面的迹象,那么你需要进一步挖掘并注意提防。你可以提示应聘者应该怎么做来确保网站的安全以及为什么要这么做或者在创建某个网站时应该注意哪些安全问题?
本文列举了九大误解,或许这些误解在你的工作生涯中也曾见识过,我们一起来看下。
一、如果我们使用Web框架,那么不必担心安全问题。
一些流行的框架比如Rails和Django在编写之初已考虑到安全性问题,并帮助防止常见的漏洞问题。然而,它们并不能阻止业务逻辑出现的缺陷,比如设置产品数量为负数,这就可能给攻击者提供了机会。如果你以非常规的方式使用该框架,它们会努力去保护你,此外,许多安全功能需要由开发者手动实现。
二、我不是很有趣,没人想要攻击我
即便你的公司或应用不是很有价值,访问者或者黑客也可能会攻击您的网站。如果你的网站能够被搜索引擎检索到,并且还有常见的漏洞,那么你的网站已不安全了,已经被攻击了。
比如,2008年,有一连串的自动ASPROX蠕虫利用网站SQL注入漏洞,以致用户的电脑受到多个恶意脚本的攻击,直到今天仍然有许多网站受到影响。
三、我们已经有了备份,因此无后顾之忧。
尽管网站被攻击后,备份可以帮助你恢复,但它绝不是一个网站安全性良好的、可行性的替代方案。
遭到黑客临时被攻击的网站可能会导致严重的后果,比如,被搜索引擎列入黑名单,敏感的用户数据被盗,网络钓鱼或蠕虫攻击你的访客。此外,即使你把网站备份了,也不能保证其不会再发生了。
四、它是一个内部网络。所以,安全并不重要。
你永远也不能确保威胁不会来自某个雇员或者攻击者以某种方法来获得访问内部网络。
比如,公司内部的CRM或ERP的机密数据被心怀不满的初级员工或者因好奇心缺乏安全意识的员工、临时工因缺乏工作安全性而泄露?攻击者通过你的无线网或者互联网连接而获取网络访问?等等这些都会对你造成潜在威胁。
五、它是安全的,因为通过VPN连接。
尽管用户使用安全的网络连接到你的应用程序,但这并不意味着你的应用程序本身就是安全的。正如我们第四条谈到的内部网络(恶意员工和网络漏洞)。
六、网站使用SSL,因此,它很安全。
如果你的网站使用SSL,它会在你的网站和访问者浏览器之间传输加密数据,尽管它能防止他人拦截未加密的数据,但SSL却无法阻止攻击者利用漏洞来访问你的网站。
七、我想防火墙可以做到!
防火墙实施了一套规则能够控制访问者的IP地址或端口,但却无法阻止访问者利用漏洞访问你的网站。应用防火墙的作用是在HTTP请求级别上但不会查看请求的内容。当正确配置后,防火墙可以帮助减少特定的攻击,比如跨站点脚本或者SQL注入,但不会确保你免受攻击,无法解决根本性问题。更重要的是,黑客会采取很多方法来绕过Web应用防火墙。
八、我们做了渗透测试和源代码分析,因此不需要担心!
渗透测试和源代码分析是编写安全Web应用程序的基本组成部分,但它却不能“包治百病”。重要的是,你不能保证所有的漏洞都能被检测到,因此你需要确保编写安全代码。更重要的是,修复Bug是如此的昂贵,漏洞亦如此,你应该在渗透测试阶段尽可能多地查找漏洞。
九、热门书籍教你如何编写安全代码。
截止到目前,你几乎不可能找到有关编写安全代码方面的编程书籍。开发者利用这些书籍学会Web应用开发,但却无法做到编写安全的Web应用,除非他们已经经历某个应用被黑客攻击或者其在Web安全方面感兴趣。
误解只是个开始!
在招聘开发环节中,检查误解是极其重要的一步,开发者可以编写安全的代码,但这只是众多步骤中的第一步。文中提及的这九大误区,希望对你有所帮助。