安全是Web应用程序不容忽视的一个重要因素,而在Web应用开发中,一些开发者由于缺乏安全方面的意识,导致Web应用存在风险。下面来介绍Web开发中常见的一些安全误区。
如果我们使用Web框架,那么不必担心安全问题
一些流行的框架比如Rails和 Django在编写之初已考虑到安全性问题,并帮助防止常见的漏洞问题。然而,它们并不能阻止业务逻辑出现的陷,比如设置产品数量为负数,这就可能给攻击者提供了机会。如果你以非常规的方式使用该框架,它们会努力去保护你,此外,许多安全功能需要由开发者手动实现。
我不是很有趣,没人想要攻击我
即便你的公司或应用不是很有价值,访问者或者黑客也可能会攻击您的网站。如果你的网站能够被搜索引擎检索到,并且还有常见的漏洞,那么你的网站已不安全了,已经被攻击了。
比如,2008年,有一连串的自动ASPROX 蠕虫利用网站SQL注入漏洞,以致用户的电脑受到多个恶意脚本的攻击,直到今天仍然有许多网站受到影响。
我们已经有了备份,因此无后顾之忧
尽管网站被攻击后,备份可以帮助你恢复,但它绝不是一个网站安全性良好的、可行性的替代方案。
遭到黑客临时被攻击的网站可能会导致严重的后果,比如,被搜索引擎列入黑名单,敏感的用户数据被盗,网络钓鱼或蠕虫攻击你的访客。此外,即使你把网站备份了,也不能保证其不会再发生了。
它是一个内部网络,所以,安全并不重要
你永远也不能确保威胁不会来自某个雇员或者攻击者以某种方法来获得访问内部网络。
比如,公司内部的CRM或ERP的机密数据被心怀不满的初级员工或者因好奇心缺乏安全意识的员工、临时工因缺乏工作安全性而泄露?攻击者通过你的无线网或者互联网连接而获取网络访问?等等这些都会对你造成潜在威胁。
它是安全的,因为通过VPN连接
尽管用户使用安全的网络连接到你的应用程序,但这并不意味着你的应用程序本身就是安全的。正如我们第四条谈到的内部网络(恶意员工和网络漏洞)。
网站使用SSL,因此,它很安全
如果你的网站使用SSL,它会在你的网站和访问者浏览器之间传输加密数据,尽管它能防止他人拦截未加密的数据,但SSL却无法阻止攻击者利用漏洞来访问你的网站。
我想防火墙可以做到!
防火墙实施了一套规则能够控制访问者的IP地址或端口,但却无法阻止访问者利用漏洞访问你的网站。应用防火墙的作用是在HTTP请求级别上但不会查看请求的内容。当正确配置后,防火墙可以帮助减少特定的攻击,比如跨站点脚本或者SQL注入,但不会确保你免受攻击,无法解决根本性问题。更重要的是,黑客会采取很多方法来绕过Web应用防火墙。
我们做了渗透测试和源代码分析,因此不需要担心!
渗透测试和源代码分析是编写安全Web应用程序的基本组成部分,但它却不能“包治百病”。重要的是,你不能保证所有的漏洞都能被检测到,因此你需要确保编写安全代码。更重要的是,修复Bug是如此的昂贵,漏洞亦如此,你应该在渗透测试阶段尽可能多地查找漏洞。
热门书籍可以教你如何编写安全代码
截止到目前,你几乎不可能找到有关编写安全代码方面的编程书籍。开发者利用这些书籍学会Web应用程序开发,但却无法做到编写安全的Web应用,除非他们已经经历某个应用被黑客攻击或者其在Web安全方面感兴趣。