解读Web应用程序安全性问题的本质

转自 http://blog.csdn.net/iwebsecurity/article/details/1688304

相信大家都或多或少的听过关于各种Web应用安全漏洞,诸如:跨site脚本攻击(XSS),SQL注入,上传漏洞...形形色色.
  在这里我并不否认各种命名与归类方式,也不评价其命名的合理性与否,我想告诉大家的是,形形色色的安全漏洞中,其实所蕴含安全问题本质往往只有几个。 我个人把Web应用程序安全性本质问题归结以下三个部分:
  1、输入/输出验证(Input/output validation)
  2、角色验证或认证(Role authentication )
  3、所有权验证(Ownership authentication)
  说到这,读者一定想知道我这三种分类与形形色色的安全性问题有什么关系?下面我逐个给您概略解答:

输入/输出验证
 
 这里的输入与输出其实都是发生在用户界面(User
Interface)这一个层面上的,比如:你某一站点上提交一份注册信息,往往会收到诸多提示:“用户名非法”,“姓名不能使用英文“......其实
这就是输入验证的一个实例。什么情况是输出呢? 比如说你成功提交一份注册信息后,系统会返回一个确认页(Registerred
Confirmation),往往在这个页面上会显示你注册时提交的部分或全部信息,那么在这里显示的信息就是我所说的输出实例之一,输入需要做什么验
证? 假如你在提交时,在Address那一栏输
入:<script>alert("iwebsecurity");</script>,
当你到达注册的确认页时,会有什么发生?如果确认页没有做输出验证处理,那很显然会在到达确认页的时候出现一个Javascript打出的提示框。其实这
就是跨site脚本攻击的一个小小的实例。当然了,单纯的输入/输出验证涉及的面可能够写一小本书了,努力在后续文章中给大家详解。

角色验证或认证
 
 我们就拿CSDN来说吧,用户有这些角色:其一可以说是游客,就是浏览者没有登录时的角色;其二是免费的注册用户;或许将来CSDN深入发展了,业务有
所更新,还会出现收费的注册用户。以上只是用户角色,那在CSDN公司内部还会有管理员角色,还有可能管理员又可以根据板块分为各种不同的角色。大家看到
了吧,你天天访问的CSDN一共可能有多少角色? 接下来的问题就是权限问题了,为什么会有角色? 就是为了控制权限的。每种角色都有自己特定的与公共的
权限,这些权限的逻辑关系是相当复杂的,如果一个Web应用在角色上没有一个详细的合理的设计,将会给开发人员带来无限痛苦和麻烦。那现在我要问几个问
题:你能保证每种角色只能做其份内的事儿?你是如何去保证的呢?方法可靠吗?有没有漏洞?...... 这,就是我要说的角色验证或认证。BTW:为什么
我会说验证或认证呢?你可以这么理解,角色性存在于两个阶段,其一进入阶段,比如你登录的那一瞬间,你进入了一个特定的角色;另一个阶段就是维持阶段,你
如何确保你登录后总是以登录时的身份在操作呢?那前者可以说是:认证,后者就是验证了。(有点罗嗦不?)
  给一个角色认证/验证方面的虚拟案例,比如:一个在线电影服务提供商,会免费给您开一个试用角色,如果这试用角色验证不当,可能会导致用户权限提升而成为一个合法的收费用户,而这个收费用户你往往却收不到他的任何费用。

所有权验证
 
 这个问题的存在也是基于角色的,只不过它所关心的是同级别的角色之间的权限问题。就拿CSDN来说吧,我是CSDN的一个免费用户,你也是。现在的问题
是:我可以替你操作吗,我可以替你发表文章吗?我能修改你的个性设置吗?如果不能,CSDN是如何实现的?虽然你和我都是普通用户,但是你有你的隐私我也
有我的隐私,如何保证严格的所有权验证就显得尤为关键了。比较简单吧,这就是我所说的所有权验证。

  我可以很自信的告诉你,只要是Web应用安全性问题,它逃不出在这三大部分,可能你还无法把形形色色的Web应用安全性问题与这三个部分对应并合理的解释清楚,但是确实只有这么简单的几个部分

时间: 2024-10-01 10:36:36

解读Web应用程序安全性问题的本质的相关文章

利用Httponly提升web应用程序安全性(转)

原文:http://kb.cnblogs.com/page/115136/ 随着www服务的兴起,越来越多的应用程序转向了B/S结构,这样只需要一个浏览器就可以访问各种各样的web服务,但是这样也越来越导致了越来越多的web安全问题.www服务依赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就不可避免地用到Cookie或者Session等技术来标记访问者的状态,而无论是Cookie还是Session,一般都是利用Cookie来实现的(Session其实是在浏览器的

利用Httponly提升web应用程序安全性

随着www服务的兴起,越来越多的应用程序转向了B/S结构,这样只需要一个浏览器就可以访问各种各样的web服务,但是这样也越来越导致了越来越 多的web安全问题.www服务依赖于Http协议实现,Http是无状态的协议,所以为了在各个会话之间传递信息,就不可避免地用到Cookie或者 Session等技术来标记访问者的状态,而无论是Cookie还是Session,一般都是利用Cookie来实现的(Session其实是在浏览器的 Cookie里带了一个Token来标记,服务器取得了这个Token并且

PWA 渐进式Web应用程序 - 解释

想象一下,如果一个网站上所有的功能都能够作为一个移动应用程序为用户所用——任何设备上都可以使用.可接收所有的通知.离线模式可用,为了实现这个愿景,2015年,谷歌创造了渐进式Web应用程序(PWA).什么是PWA?使用PWA对企业有哪些好处? 什么是PWA? PWA是指可以在任何浏览器上执行的支持互联网的应用程序,它是由服务器端脚本(PHP和ASP)和客户端脚本(JavaScript和HTML)组成的. PWA具有成本效益,可以使公司轻松管理各种任务.此外,web应用程序安全性更高,易于定制,可

单一入口web应用程序概述:结构,特点,优点,缺点/php,asp,jsp

单一入口应用程序概述 什么是单一入口应用程序? 在解释什么是单一入口应用程序之前,我们先来看看传统的 web 应用程序.news.php 显示新闻列表news_edit.php 显示新闻编辑页面这两个页面不但分别实现了两个功能,还成为了应用程序的两个入口. 那什么是入口啊?打个比方,大家上 WC,都是男生进一个门,女生进一个门.这两个门就是 WC 的两个入口. 呵呵,上面的例子应该很好理解吧.那稍微变换一下,单一入口的概念就很容易理解了.现在我们是进一个公共 WC,不管男女都是从最外面的入口进入

Java Web学习(1):Web应用程序与Web服务器

一Web应用程序 (1)什么是Web应用程序 应用程序有两种模式C/S.B/S.C/S是客户端/服务器端程序,也就是说这类程序一般独立运行.而B/S就是浏览 器端/服务器端应用程序,这类应用程序一般借助浏览器来运行. Web应用程序一般是B/S模式.Web应用程序首先是应用程序,和用标准的程序语言,如Java.PHP等编写出来 的程序没有什么本质上的不同.然而Web应用程序又有自己独特的地方,就是它是基于Web的,而不是采用传统方法 运行的.换句话说,它是典型的浏览器/服务器架构的产物. 一个W

对 Web 应用程序进行性能调优

动态的 Web 应用程序能够存储大量信息,让用户能够通过熟悉的界面立即访问这些信息.但是,随着应用程序越来越受欢迎,可能会发现对请求的响应速度没有以前那么快了.开发人员应该了解 Web 应用程序处理 Web 请求的方式,知道在 Web 应用程序开发中可以做什么,不能做什么,这有助于减少日后的麻烦. 静态的 Web 请求(比如图 1 所示的请求)很容易理解.客户机连接服务器(通常通过 TCP 端口 80),使用 HTTP 协议发出一个简单的请求. 图 1. 客户机通过 HTTP 请求静态的文件 服

WEB服务器4--IIS中网站、Web应用程序和虚拟目录

网站.Web应用程序和虚拟目录 在IIS中可以创建网站.Web 应用程序和虚拟目录,以便与计算机网络上的用户共享信息. “网站”.“Web 应用程序”和“虚拟目录”这三个概念的关系如图 8?1所示. 一个“网站(Web Site)”包含一个或多个“ Web 应用程序(Web Application)” 一个Web 应用程序包含一个或多个“虚拟目录(Virtual Directory)” 虚拟目录则映射到 Web 服务器或远程计算机上的物理目录. 图中可以清楚地看到此Web服务器上有两个“网站”:

NET5 Web应用程序

ASP.NET5 Web应用程序结构 本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引入了几个新的基本概念,理解这些概念对快速开发WEB应用来说很重要.或许这些这些概念对你来说不是新的,但是对那些使用ASP.NET 和 Visual Studio 进行传统的WEB应用开发的程序员来说,这些概念可能是新的. 本文主要内容包括: ASP.NET 项目

了解ASP.NET5 Web应用程序结构

本文参考ASP.NET5 官方文档 Understanding ASP.NET 5 Web Apps,加入了一些个人理解,理解不对的地方希望大家能指出,互相学习. ASP.NET 5 针对WEB编程引入了几个新的基本概念,理解这些概念对快速开发WEB应用来说很重要.或许这些这些概念对你来说不是新的,但是对那些使用ASP.NET 和 Visual Studio 进行传统的WEB应用开发的程序员来说,这些概念可能是新的. 本文主要内容包括: ASP.NET 项目结构 Framework 运行时 pr