开放Web应用安全项目(OWASP)很快会发布今年的10大Web应用安全漏洞清单。这个清单与去年并无太大差异,这代表负责应用设计与开发的人仍然没能解决之前那些显而易见的错误。许多最多见的Web应用漏洞仍然普遍存在,许多恶意软件搜索和攻击这些漏洞,连黑客新手都能轻松作到。 数据库
本文介绍了5个最多见的Web应用漏洞,以及企业该如何修复初级问题,对抗那些针对这些漏洞的攻击。 浏览器
注入攻击和跨站脚本攻击 安全
Web应用主要有2种最多见的严重缺陷。首先是各类形式的注入攻击,其中包括SQL、操做系统、电子邮件和LDAP注入,它们的攻击方式都是在发给应用的命令或查询中夹带恶意数据。别有用心的数据可让应用执行一些恶意命令或访问未受权数据。若是网站使用用户数据生成SQL查询,而不检查用户数据的合法性,那么攻击者就可能执行SQL注入。这样攻击者就能够直接向数据库提交恶意SQL查询和传输命令。举例来讲,索尼的PlayStation数据库就曾经遭遇过SQL注入攻击,并植入未受权代码。 服务器
跨站脚本(XSS)攻击会将客户端脚本代码(如JavaScript)注入到Web应用的输出中,从而攻击应用的用户。只要访问受攻击的输出或页面,浏览器就会执行代码,让攻击者劫持用户会话,将用户重定向到一个恶意站点或者破坏网页显示效果。XSS攻击极可能出如今动态生成的页面内容中,一般应用会接受用户提供的数据而没有正确验证或转码。 网络
为了防护注入攻击和XSS攻击,应用程序应该配置为假定全部数据——不管是来自表单、URL、Cookie或应用的数据库,都是不可信来源。要检查全部处理用户提供数据的代码,保证它是有效的。验证函数须要清理全部可能有恶意做用的字符或字符串,而后再将它传给脚本和数据库。要检查输入数据的类型、长度、格式和范围。开发者应该使用现有的安全控制库,如OWASP的企业安全API或微软的反跨站脚本攻击库,而不要自行编写验证代码。此外,必定要检查全部从客户端接受的值,进行过滤和编码,而后再传回给用户。 架构
身份验证和会话管理被攻破 函数
Web应用程序必须处理用户验证,并创建会话跟踪每个用户请求,由于HTTP自己不具有这个功能。除非任什么时候候全部的身份验证信息和会话身份标识都进行加密,保证不受其余缺陷(如XSS)的攻击,不然攻击者就有可能劫持一个激活的会话,假装成某个用户的身份。若是一个攻击者发现某个原始用户未注销的会话(路过攻击),那么全部账号管理功能和事务都必须从新验证,即便用户有一个有效的会话ID。此外,在重要的事务中还应该考虑使用双因子身份验证。 测试
为了发现身份验证和会话管理问题,企业要以执行代码检查和渗透测试。开发者可使用自动化代码和漏洞扫描程序,发现潜在的安全问题。有一些地方一般须要特别注意,其中包括会话身份标识的处理方式和用户修改用户身份信息的方法。若是没有预算购买商业版本,那么也可使用许多开源和简化版本软件,它们能够发现一些须要更仔细检查的代码或进程。 网站
不安全的直接对象引用 编码
这是应用设计不当引发的另外一个缺陷,它的根源是错误地假定用户老是会遵循应用程序的规则。例如,若是用户的账号ID显示在页面的URL或隐藏域中,恶意用户可能会猜想其余用户的ID,而后再次提交请求访问他们的数据,特别是当ID值是能够猜想的时候。防止这种漏洞的最佳方法是使用随机、不可猜想的ID、文件名和对象名,并且不要暴露对象的真实名称。常见的错误暴露数据的位置是URL和超连接、隐藏表单域、ASP.NET的未保护视图状态、直接列表框、JavaScript代码和客户端对象(如Java Applet)。每次访问敏感文件或内容时,都要验证访问数据的用户已得到受权。
安全性配置不当
支持Web应用程序的基础架构包含各类各样的设备和软件——服务器、防火墙、数据库、操做系统和应用软件。全部这些元素都必须正确配置和保证安全,应用程序只是运行在最低权限配置上,可是许多系统自己还不够安全。系统管理不当的一个主要缘由是Web应用程序管理人员和基础架构支持人员从未接受过必要的培训。
为执行平常网络应用管理的人员提供足够的培训和资源,这是在开发过程当中全部阶段保证安全性和保密性的重要条件。最后,要为Web应用程序安排一个渗透测试,处理全部敏感数据。这是一种主动评估应用抵抗攻击能力的方法,能够在受到攻击前发现系统漏洞。
结束语
一直以来,这5种常见的Web应用漏洞都是IT安全的痛处。它们并非新漏洞,可是它们都没有解决,在人们对Web应用安全有足够认识以前,攻击者仍然会想尽办法继续利用这些缺陷发起偷盗、欺骗和网络间谍等攻击。