ASP.NET中的程序权限问题

谈到ASP.NET程序的权限,一般可分为两种:

1) 账户的权限。

2) 代码的权限。

账户的权限可以限制运行在这个账户下的所有ASP.NET程序能进行什么样的操作,而代码的权限是ASP.NET程序里独有的,它规定了ASP.NET程序能够访问什么样的资源,比如数据库,文件等等。他们对ASP.NET程序是共同影响的,简单地说,ASP.NET程序表现出来的是他们共同作用的交集。

在IIS 5中,Application Pool的默认配置账户是ASPNET。在IIS 6/7中有点不同,ASPNET账户被替成Network Service。以IIS 7为例,如果你使用的是默认的Network Service,那么你的ASP.NET程序能访问的资源都是受Network Service限制的,换句话说,这个账户能访问什么资源,你的ASP.NET程序才能访问资源。Network Service在默认情况下,是可以读写IIS wwwroot文件夹下的所有文件以及在ACL的控制下来访问其他文件夹。

Scenario 1: 在Visual Studio下开发的时候,我们运行Visual Studio的账户是系统账户(登录机器的账户),这个账户的权限比Network Service要大,因而出现一旦把程序部署到IIS中就有错误的情形时,大多可以先从这方面考虑。

Scenario 2: 在以windows集成验证方式连接数据库时,有时也会碰到Network Service账户不能Login的情形,这也是由于在开发时是用系统账户登录数据库的,而在部署到IIS后,是用Network Service来连接数据库。因而需要将Network Service账户添加到数据库中。

代码的权限在ASP.NET中叫做Code Access Security(CAS). 它规定了这个ASP.NET程序能够访问哪些资源。很明显,在一些情况下,账户权限并不能很方便的限制ASP.NET程序能做什么。利用CAS,我们可以限制ASP.NET程序是否能进行文件操作,是否能访问数据库资源。在ASP.NET的配置文件中,它分有5个不同的等级,通过设置不同的等级可以限制程序的访问资源。如果需要详情的话,建议大家可以查看这篇文章:

http://msdn.microsoft.com/en-us/library/ms998326.aspx

Scenario 3: ASP.NET程序部署到付费空间上后便不能创建文件了。这是因为服务器在machie级别定义了CAS,限制所有运行在这台机器上的ASP.NET不能进行文件操作。这样做的目的主要是为了保护服务器的安全。

同时,根据程序需要,我们也可以使用impersonate(通常在windows验证时会用到)。它可以模仿一个特定用户,这样的话,这个thread就运行在这个特定账户上。在域资源的访问中,这是一个很不错的手段来对不同的用户进行限制。

Have a nice day!

时间: 2024-09-17 04:14:14

ASP.NET中的程序权限问题的相关文章

asp.net-在iis中部署程序时,出现Active Server Pages 错误 'ASP 0221'

问题描述 在iis中部署程序时,出现Active Server Pages 错误 'ASP 0221' Active Server Pages 错误 'ASP 0221' 无效的 @ 命令指令 /hbsjt/default.aspx,行 1 指定的"Page Language="C#" AutoEventWireup="true" CodeBehind="default.aspx.cs" Inherits="InfoCMS.W

解决ASP.NET中"/"应用程序中的服务器错误的方法_实用技巧

 学习asp.net中讲解验证控件问题时,我的程序运行时总是提示这样的问题:"/"应用程序中的服务器错误.如下图:     从网上找到了相关的方法:  在webconfig中找到 <appSettings> <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" /> <addkey="ValidationSettings:U

解决 ASP.NET 中目录访问权限的问题

asp.net|访问|解决|问题 症状:从 ASP.NET 应用程序,访问远程增强安全性的资源时可能会收到以下错误信息      登录失败:未知用户名或错误密码. 解决办法:      1   在 Web 服务器上修改 ASPNET 帐户的密码为 password .      2   在远程文件服务器上,修改 ASPNET 帐户(如果没有该帐户则创建之)的密码为 password .      3   在远程文件服务器上,为 ASPNET 帐户设置相应目录的访问权限.      4   修改

Asp.Net中Excel操作权限的问题

近日在打开原来写的一个网页程序运行时,出现了Excel操作权限的问题,具体的说就是在代码中调用下面这段与Excel操作有关的语句时, Application curExcelApp = new ApplicationClass(); 提示权限不足,具体的提示内容如下: 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80070005. 说明: 执行当前 Web 请求期间,出现未处理的异常.请

解决ASP.NET中目录访问权限的问题

症状:从 ASP.NET 应用程序,访问远程增强安全性的资源时可能会收到以下错误信息 登录失败:未知用户名或错误密码. 解决办法: 1 在 Web 服务器上修改 ASPNET 帐户的密码为 password . 2 在远程文件服务器上,修改 ASPNET 帐户(如果没有该帐户则创建之)的密码为 password . 3 在远程文件服务器上,为 ASPNET 帐户设置相应目录的访问权限. 4 修改 Web.config 文件,在 配置节中添加: <identity impersonate="

解决 ASP.NET中目录访问权限的问题_实用技巧

症状:从 ASP.NET 应用程序,访问远程增强安全性的资源时可能会收到以下错误信息 登录失败:未知用户名或错误密码. 解决办法:      1   在 Web 服务器上修改 ASPNET 帐户的密码为 password .      2   在远程文件服务器上,修改 ASPNET 帐户(如果没有该帐户则创建之)的密码为 password .      3   在远程文件服务器上,为 ASPNET 帐户设置相应目录的访问权限.      4   修改 Web.config 文件,在 <syste

ASP.Net中程序构架与程序代码的分离

asp.net|程序 一年前,当本人拿到一个名叫TWIG的PHP程序时,立即被作者OOP编程思想所折服,很难想像TWIG中所有的功能(行事历.邮件.个性化)均在一个PHP文件(index.php3)中执行完成,这就得益于作者采用了程序代码与页面构架分离的思想,但是我也看到尽管作者做了很大的努力,但由于PHP的局限性,程序并没有真正做到代码与构架的分离,index.php3这个主文件由于要执行的功能太多,所以其require的模块文件相当之多,至使整个文件依然显得十分零乱,本人愚昧,当时花了半个月

在ASP.NET中使用EXCEL之权限设置

在ASP.NET中使用EXCEL,首先需要对COM组件的权限进行设置.如果未设置权限,则会报访问拒绝的错误.详细错误信息通常如下: 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息. 异常详细信息: System.UnauthorizedAccessException: 拒绝访问. ASP.NET 未被授权访问所请求的资源.请考虑授予 ASP.NET 请求标识访问此资源的权限.ASP.NET 有一个在应用程序没有模拟时使

asp程序权限控制的代码

' '重要代码,将这些代码拷贝到代码配置文件中.(代码配置文件就是一个普通的asp文件,所有的公共代码都放到这 '个文件中,其他需要调用公共代码的就通过include将这个文件包含进去. ' '权限验证代码 'RightString:权限串(用户的所有权限连接成的串,用都好(,)连接.例如:,1,3,12,7,45, 'RightID :验证的权限Id,为一个数字 '程序的功能就是在RightString串中查找RightID,如果查到了,说明用户有改操作权限 '返回True,如果没有查到说明用