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

相信大家都或多或少的听过关于各种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-11-01 14:35:39

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

测试Web应用程序是否存在跨站点脚本漏洞

到目前为止,对于跨站点脚本攻击具有很大的威胁这一点大家并无异议.如果您很精通 XSS 并且只想看看有什么好的测试方法可供借鉴,那么请直接跳到本文的测试部分.如果您对此一无所知,请按顺序认真阅读!如果某个怀有恶意的人(攻击者)可以强迫某个不知情的用户(受害者)运行攻击者选择的客户端脚本,那么便会发生跨站点脚本攻击."跨站点脚本"这个词应该属于用词不当的情况,因为它不仅与脚本有关,而且它甚至不一定是跨站点的.所以,它就是一个在发现这种攻击时起的一个名字,并且一直沿用至今.从现在开始,我们将

如何缓解Web应用程序威胁 缓解Web应用程序威胁的方法

现在几乎所有企业都会在互联网上建立网站,他们不仅通过网站提供信息,而且还通过Web应用程序.博客和论坛与他们的客户进行互动.从网上零售商的互动婴儿注册表,到电子交易网站的投资计算器,或者软件供应商的互动支持论坛,企业每天都会产生新的Web应用程序来使获取信息. 以业务为中心的Web互动迅速发展也带来了新的信息安全威胁,而企业以前的静态网页并没有这些威胁.这些威胁主要是针对Web应用程序,包括补充的Web服务器.数据库和其他支持基础设施. 在本文中,我们将讨论Web应用程序面临的最严重的威胁以及安

3分钟告诉你什么是渐进式Web应用程序!

随着移动设备使用的大幅增长,建立一款适合移动设备的商业网站至关重要.根据Statista最新的一项研究显示,截止到2019年,手机互联网用户渗透率将达到63.4%.显然,如何在移动开发技术领域取得重大的突破成为了移动开发人员当前面临的最大挑战. 想象一下,如果一个网站上所有的功能都能够作为一个移动应用程序为用户所用--任何设备上都可以使用.可接收所有的通知.离线模式可用,为了实现这个愿景,2015年,谷歌创造了渐进式Web应用程序(PWA).什么是PWA?使用PWA对企业有哪些好处? 什么是PW

ASP.NET Web应用程序的安全解决方案浅析_实用技巧

一.ASP.NET Web应用程序架构安全隐患 1. 对于程序集主要威胁:未验证的访问.反向工程.代码注入.通过异常获得程序信息.未审核访问. 2. 客户端与Web应用程序之间的安全隐患:代码注入(跨站点脚本或缓冲区溢出攻击).网络监控(密码和敏感应用程序数据探测).参数破解(表单字段.查询字符串.Cookie.视图状态.HTTP头信息).会话状态变量ID取得.信息获取(通常使用异常). 3. Web应用程序客户端与企业服务之间的安全隐患:非审核访问.破解配置数据.网络监视.未约束代理.数据复制

你所需要知道的关于Web应用程序安全测试的事情

在21世纪做生意,自动化就是问题的实质!当然,Web应用给企业带来了获得在全球范围数以百万计潜在客户的灵活性,但安全问题的威胁却日益严重. 据Acutenix,Web应用安全行业的领导者,最近的独立分析指出,所有的网络攻击中75%是在Web应用程序level进行的.此外,该公司已经表明,至少有70%的网站是在可能被黑客直接攻击的风险之下!随着越来越多重要和敏感的数据被存储在Web应用程序中,数据相关的处理也相应增加,网络应用程序的安全测试已经变得至关重要. 安全性测试是为了确保一个web应用程序

如何基于Web应用程序安全经验来开发云应用程序?

随着越来越多的企业 寻找可部署在云供应商环境中的应用程序,对于健全的安全措施和技术的需求也变得至关重要. 那么,如何在云环境中开发应用程序以最大限度地提高安全性呢?这些云应用程序是否有别于内部应用程序?在开发周期和质量保证(QA)过程中,需要有哪些变化?在把应用程序迁移到公共云环境之前,上述所有问题都需要解决.在本文中,我们将提供一些指导,如何专为云环境开发安全的应用程序,以抵御如今大部分常见攻击.我们还将探讨一些需要落实到位的控制因素,以确保基于云的应用程序在开发和部署时的安全性.如何安全地开

Web应用程序安全必须重视八大问题

对于任何一个项目,开始阶段对于交付安全的应用来说非常关键.适当的安全要求会导致正确的安全设计.下面讨论在分析Web应用程序的安全要求时需要考虑的八大问题.1.认证和口令管理:这主要是一种一次性的活动而且仅仅是作为项目的一部分而完成的.有人可能会问一些与认证和口令管理有关的问题:◆口令策略:这个问题非常重要的原因在于避免与用户凭据有关的字典攻击.◆口令哈希算法:确保通过适当的加密算法来加密口令也非常重要.◆口令重置机制:为了避免黑客修改或截获口令,重置机制非常关键.2.认证和角色管理:在分析项目的

商务Web应用程序的界面设计

商务Web应用程序的界面设计 商务Web应用程序的设计常常被人们所忽视.我看到许多程序,它们既不符合商业目标,也不满足用户需求,它们有很差的用户体验,并造成了商业利润的损失.更夸张的是,有些设计师根本没有参与整个程序的开发流程,而是把全部职责都推给了开发人员. 对于擅长前端和后台技术的工程师来说,他们缺乏设计能力,很难完成这项艰巨的任务.不满意的消费者.沮丧的用户,以及失败的项目,也就自然而然地出现了. 接下来,我们将介绍"商务Web应用程序"界面设计的基础知识.一般来说,人们可以提供

Java 开发 2.0: 使用 Google App Engine--利用 Groovy、Eclipse 和 JDO 进行快速 Web 应用程序开发

开源解决方案和外来基础设施改变了 Java 开发的特征,使您能够以更低的成本.更快的速度交付更好的软件.Andrew Glover 发明了 Java 开发 2.0 这一术语,使用它概括了所有这些现象体现出来的强大力量.他推出了一个全新的系列,主要介绍有关 Java 开发 2.0 的工具和技术.本系列的第一期文章将宣布 Java 开发 2.0 的到来,并解释了如何使用 Google 的 App Engine for Java 迅速实现这些概念. Java 世界如同一个丰富的生态系统,涉及开发人员.