ASP.NET安全问题--ASP.NET中的授权问题(前篇)

前言:之前的一些文章谈了一些有关验证的问题,接下来的一些文章就说下授权以及代码访问安全的问题。

在ASP.NET应用程序中,授权就意味着允许访问资源,资源的形式有很多了:文件,数据库,图片等。授权的处理过程基本上是:创建用户或者用户组,然后为他们分配权限。在.NET Framework中,有很多的方式可以实现授权,如文件授权,URL授权以及自定义的授权。

下面我们就来谈下ASP.NET是如何控制访问受限资源的,本篇主要讲述下列问题:

1.基于角色的安全

2. 权限的映射:

3.权限对象Permission简介

本篇的代码不是很多,到了下篇实战篇中尽量给出更多的代码。

1.基于角色的安全

相信大家多什么是角色的,以及基于角色的安全都有一些了解,他们的概念就不赘述了。在讲述基于角色的安全之前,希望大家对之前讲过的Identity和IPrincipal要了解(如果不是很清楚的,可以参看我之前的安全的系列文章)。

在.NET中,可以用.NET Framework灵活的将用户标识(Identity)和角色相结合,并且为结合后的主体定义权限。我们之前说过:

主体(IPrincipal)=(用户标识:包含用户名等信息的对象)Identity+角色;

我们可以定义很多的角色,然后为角色定义访问资源的权限。我们一般是定义角色,如定义一个Customer角色,然后使用户的角色为Customer,然后我们定义Customer的访问权限,那么这些访问的权限就应用到了那些角色为Customer的用户上,也就是说,我们并不是为每个用户分别定义权限,因为那样维护和修改起来麻烦。

当然,我们也可以对特定的用户单独的进行授权,如写入文件。授权的方式很多,但是他们的思想是大体相同的:

通常,一个应用程序的授权步骤如下:

1.判断用户是否有合法的访问资源的凭证(也就是我们之前谈论的验证的过程)

2.拒绝特定的用户访问特定的资源

3.允许特定的用户访问特定的资源

2. 权限的映射:

在.NET 中,有一些内置的Permission对象,它们可以使得用户有合适的权限来访问资源。在讲后面的问题之前,首先说说什么是Permission。我们知道,我们的系统中一般有很多的文件和文件夹,而且这些文件或者文件夹常常都是有访问的权限的,比如,我们可以把一些文件的权限定义为:只能管理员修改,一般的用户只读,这点大家都不陌生了。

注意:我们是通过系统来配置这些文件或者文件夹的权限的。(大家应该都会)

我们的网站,实质其实就是放在服务器上的一些文件,既然这些文件在服务器,如Win Server 2003上,那么这些文件肯定是有访问的权限的。如果你是这台服务器的管理员,那么你就可以对这些文件进行任意的操作,其他的用户就没有这个能力了。

现在我们假设,我们的网站是放在服务器上,而且网站的文件,如aspx页面,图片,App_Code等都在网站的文件夹中,而且这些文件资源的权限早就定义好了,如只读。

其实我们在.NET中的一些Permission类,其实就是权限的映射。怎么说?

假如我们的网站文件夹中的一个文件,如Admin.aspx页面,我们可以通过操作系统来定义这个文件的访问权限(操作为:选中文件,点击右键,选择"共享和安全",然后选择哪些用户可以访问,而且这些用户的操作是什么,如读,写,安全控制等)。这些都是系统定义的一些权限,.NET Framework就把定义在文件上的一些权限"取出",包装映射在一些Permission类中,这样我们就能用托管代码,如C#来操作这些权限,而不用Win API(非托管代码)来操作。(理解如有问题,欢迎大家指正!)

时间: 2024-10-02 21:11:16

ASP.NET安全问题--ASP.NET中的授权问题(前篇)的相关文章

一起谈.NET技术,VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

艾伟_转载:VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

VS 2010 和 .NET 4.0 系列之《在ASP.NET 4 Web Forms中实现URL导向》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

ASP.NET安全问题--ASP.NET安全架构

在开发Web程序中,我们可以选择用自己的方法来实现安全的策略,或者可以购买第三方的安全代码和产品,不管怎么样,都是要很大的花费的,幸好在.NET Framework中已经内置了安全的解决方案. ASP.NET和 .NET Framework 联合IIS为Web应用程序安全提供了一个基础结构.它的一个很明显的优势在于我们不必再编写自己的安全架构,我们可以利用.NET安全架构的内置的特性,而且整个安全的架构是经过测试和时间的考验了的. .NET安全架构包含了很多的类,这些类用来处理身份验证,授权,基

艾伟_转载:VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

VS 2010 和 .NET 4.0 系列之《ASP.NET 4 中的SEO改进 》篇

本系列文章导航 VS 2010 和 .NET 4.0 系列之<ASP.NET 4 中的SEO改进 >篇 VS 2010 和 .NET 4.0 系列之<干净的Web.Config文件 >篇 VS 2010 和 .NET 4.0 系列之<起始项目模板>篇 VS 2010 和 .NET 4.0 系列之<多定向支持>篇 VS 2010 和 .NET 4.0 系列之<多显示器支持>篇 VS 2010 和 .NET 4.0 系列之<代码优化的Web开发

磁盘ID在ASP源码防拷贝中的应用

自从ASP(Active Server Pages)问世以来,因其可以创建健壮易于维护.与平台无关的应用系统,ASP技术受到了越来越多网络程序员的喜爱,使用ASP从事WEB开发的人也越来越多.但ASP只是一种非编译型的.在服务端运行的脚本语言,采用明文(plain text)方式来编写,即使采用了ASP加密程序对ASP源码进行加密,也不一定能保证发布到运行环境中去的ASP应用程序不被非法拷贝.对于高权限的管理员,可以轻而易举从服务器端拷贝出ASP程序应用到别的非授权网站.这样给ASP应用商业化带

磁盘ID在ASP源码防拷贝中的应用(z)

磁盘ID在ASP源码防拷贝中的应用(孔祥军.苏悦娟 2001年07月26日 17:07) 自从ASP(Active Server Pages)问世以来,因其可以创建健壮易于维护.与平台无关的应用系统,ASP技术受到了越来越多网络程序员的喜爱,使用ASP从事WEB开发的人也越来越多.但ASP只是一种非编译型的.在服务端运行的脚本语言,采用明文(plain text)方式来编写,即使采用了ASP加密程序对ASP源码进行加密,也不一定能保证发布到运行环境中去的ASP应用程序不被非法拷贝.对于高权限的管

asp 读取数据库-asp编写的网页,读取数据库时,找不新建的表中数据,rs.eof 为真(此网页可读取别的表中的数据)

问题描述 asp编写的网页,读取数据库时,找不新建的表中数据,rs.eof 为真(此网页可读取别的表中的数据) <% size=request("size") c1=request("case") if size="" then size=20 end if n=1 title=trim(request("title")) action=request("action") sh=request(&qu