分享
 
 
 

初级:ASP.NET使用OLEDB适配器访问ACCESS数据库出现各类连接异常

王朝asp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

同样是一个常见问题,尤其在WIN2003下经常有人问起。

出现连接异常通常是由磁盘权限引起,系统默认ASP.NET帐户对于NTSF分区只具有最小特权,因此可能引起访问异常。解决办法是于系统中修正相应权限。

另:连接字符串中指定的独占访问方式也可能引起连接异常。此情况只需修正连接字符串即可。

如:

conx.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Password=;User ID=Admin;Data Source="+ Server.MapPath("DATA\\典雅假期.mdb")+";";

即可

附MSDN关于创建自定义帐户来运行 ASP.NET的文章,方便了解安全部署ASP.NET项目。

----------------------------------------------------------------------------------

如何创建一个自定义帐户来运行 ASP.NET

Microsoft Corporation

目标

本模块用于:

• 创建一个具有足够权限正确运行 ASP.NET 应用程序的最小特权帐户。

• 配置 ASP.NET,使其使用自定义的最小权限帐户来运行。

适用于:

本模块适用于下列产品和技术:

• Microsoft_ Windows_ XP 或 Windows 2000 Server(带 Service Pack 3)以及更高版本的操作系统

• Microsoft .NET Framework 版本 1.0(带 Service Pack 2)以及更高版本

• Internet 信息服务 (IIS) 5.0 或 6.0(仅当使用 IIS 5.0 隔离模式时)

本模块的使用方法

要最大程度的利用本模块:

• 必须有开发 ASP.NET Web 应用程序的经验并熟悉 machine.config 文件的用途和结构。

• 必须有使用 Windows 管理工具创建和管理独立或基于域的 Windows 用户帐户的经验。

• 阅读模块“ASP.NET Security”。本模块将向您提供下列各项的详细信息:ASP.NET 安全性是如何工作的,ASP.NET 辅助进程标识对一个正在执行的应用程序的权限有哪些影响,以及如何使用模拟来轻松地向 Web 应用程序的用户授予适当的权限级别。

摘要

默认情况下,每个 ASP.NET 辅助进程在名为 ASPNET 的最小特权帐户的上下文中运行。如果 ASP.NET 应用程序部署在基于域的服务器上,或需要访问远程服务器上的资源,则可以通过配置 ASP.NET 以运行在不同帐户的上下文中来简化管理。

本模块描述了如何将 ASP.NET 配置为在自定义本地帐户或域帐户的上下文中运行,并描述了分配此帐户以使其正常工作的权限。

预备知识

在开始使用本模块之前,应了解以下内容:

ASP.NET 辅助进程标识

用于运行 ASP.NET 的默认帐户(在安装时创建)是一个最小特权的本地帐户,并在 machine.config 中以如下方式指定:

<processModel enable="true" userName="machine" password="AutoGenerate" />

此帐户在本地用户和组下标识为 ASPNET ,并有一个在 Local System Authority (LSA) 中受到安全保护的强密码。

当您需要使用 ASP.NET 进程标识访问网络资源(如数据库)时,可以执行下列任一操作:

• 使用域帐户。

• 使用“镜像”本地帐户(即在两台计算机上用户名和密码匹配的帐户)。在计算机位于没有信任关系的不同域中时,或计算机由防火墙隔开而无法打开 NTLM 或 Kerberos 身份验证所需的端口时,需要使用此方法。

最简单的方法是在 Web 服务器上将 ASPNET 帐户的密码改为一个已知的值,然后在目标计算机上用相同的密码创建一个名为 ASPNET 的帐户。在 Web 服务器上,必须首先更改本地用户和组中的 ASPNET 帐户密码,然后替换 machine.config 中 <processModel> 元素上的凭据。不应将纯文本密码存储在 machine.config 中,而应改用 aspnet_setreg.exe 将加密密码存储在注册表中。有关详细信息,请参阅模块 8“ASP.NET 安全性”。

<processModel enable="true"

userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel ASPNET_SETREG,userName"

password="registry:HKLM\SOFTWARE\YourSecureApp\processModel ASPNET_SETREG,password" . . ./>

可以使用本模块中提供的步骤创建一个最小特权的本地帐户。

模拟固定标识

通过在 web.config 中采用下列设置,您可以为特定的虚拟目录设置固定标识。使用 aspnet_setreg.exe 将加密凭据存储在注册表中。

<identity impersonate="true"

userName="registry:HKLM\SOFTWARE\YourSecureApp identity\ASPNET_SETREG,userName"

password="registry:HKLM\SOFTWARE\YourSecureApp identity\ASPNET_SETREG,password" />

如果在同一个 Web 服务器上有多个 Web 站点,而这些 Web 站点需要以不同的身份运行,则通常使用此方法;例如,在应用程序宿主方案中就需要采用这种方法。

本模块了描述如何创建最小特权的本地帐户。如果您主要进行管理工作,则可以使用一个具有强密码的最小特权受限域帐户。

当考虑用于运行 ASP.NET 的帐户时,则请记住下列几点:

• 默认情况下,ASP.NET 不进行模拟。因此,Web 应用程序所执行的任何资源访问都使用 ASP.NET 进程身份。在此情况下,Windows 资源必须有一个向 ASP.NET 进程帐户授予访问权的访问控制列表 (ACL)。

• 如果启用了模拟,则应用程序使用原始调用方的安全上下文来访问资源,或如果配置了 IIS 进行匿名身份验证,则使用匿名 Internet 用户帐户(默认情况下为 IUSR_MACHINE)。在此情况下,资源必须有基于原始调用方身份(或 IUSR_MACHINE)的 ACL。

• 在创建自定义帐户时,应始终遵循最小特权原则 — 只提供最小限度的所需特权和权限。

• 避免使用 SYSTEM 帐户运行 ASP.NET。

• 避免向此帐户授予“作为部分操作系统”的特权。

创建一个新的本地帐户

此过程创建一个新的本地帐户。默认情况下,这个新帐户将被添加到本地 Users 组中。

要创建一个新的本地帐户,请执行下列操作:

1. 创建一个本地帐户(例如“CustomASPNET”)。

确保对此帐户使用强密码。强密码应至少包含七个字符,并采用大小写字母、数字和其他字符(如 *、? 或 $)的混合方式。

2. 清除 User must change password at next logon 选项。

3. 选择 Password never expires 选项。

分配最小特权

此过程分配运行 ASP.NET 所需的一组最小的特权。

要分配最小特权,请执行下列操作:

1. 从 Administrative Tools 程序组中,启动 Local Security Policy 工具。

2. 展开 Local Policies,然后选择 User Rights Assignment。

右窗格中会显示出一个特权列表。

3. 向新帐户分配下列特权:

• 从网络访问此计算机

• 作为批处理作业登录

• 作为服务登录

• 拒绝本地登录

• 拒绝通过终端服务登录

注意 要向帐户分配特权,请双击此特权,然后单击 Add 来选择所需的帐户。

4. 关闭此工具。

分配 NTFS 权限

此过程在本地文件系统中向自定义的 ASP.NET 帐户授予所需的 NTFS 权限。

注意 此过程中的步骤适用于 Web 服务器上的文件系统(而不适用于远程计算机上的文件系统,为了进行网络身份验证,可以在远程计算机上复制此帐户)。

要分配 NTFS 权限,请执行下列步骤:

• 启动 Windows 资源管理器,并向表 1 中指定的文件夹分配适当的权限。

表 1 中提到的固定模拟帐户是指可以使用 web.config 中的 <identity> 元素有选择地配置的帐户,如下所示。

<identity impersonate="true"

userName="registry:HKLM\SOFTWARE\YourSecureApp identity\ASPNET_SETREG,userName"

password="registry:HKLM\SOFTWARE\YourSecureApp identity\ASPNET_SETREG,password" />

在本例中,aspnet_setreg.exe 已被用于以加密格式将自定义帐户凭据存储在注册表中。

表 1: 所需的 NTFS 权限

位置 所需权限 帐户 备注

临时 ASP.NET 文件:

C:\WINNT\Microsoft.NET\Framework\<version>临时 ASP.NET 文件 完全控制 Process 和固定模拟帐户 这是 ASP.NET 的动态编译位置。在此文件夹下,为每个应用程序在离散目录中生成应用程序代码。

<compilation> 元素中的 tempdir 属性可以用于更改此默认位置。

临时文件夹:

C:\WINNT\temp Read/Write/Delete Process Web 服务用于生成序列化代理的位置。

注意,Delete 权限使用 Windows 资源管理器文件夹属性对话框的 Security 页上的 Advanced 按钮设置。

应用程序虚拟目录:

C:\inetpub\wwwroot\webapp1 Read Process Web 应用程序文件的位置(即应用程序的虚拟根目录)。

默认情况下,用户组具有适当的访问权限。

安装 (%installroot) 层次结构:

(C:\WINNT\Microsoft.Net\Framework\v1.0.3705) Read Process和固定模拟帐户 ASP.NET 必须能够访问 .NET Framework 程序集。

默认情况下,用户组具有适当的访问权限。

全局程序集缓存:

C:\WINNT\assembly Read Process 和固定模拟帐户 这是全局程序集缓存。不能直接使用 Windows 资源管理器来编辑此文件夹的 ACL。应改用一个命令窗口并运行下列命令:

cacls %windir%\assembly /e /t /p domain\useraccount:R

另外,在使用 Windows 资源管理器前,用下列命令取消对 shfusion.dll 的注册:

regsvr32–u shfusion.dll

在用 Windows 资源管理器设置权限后,用下列命令重新注册 shfusion.dll:

regsvr32 shfusion.dll

Web 站点根目录:

C:\inetpub\wwwroot 或默认 Web 站点指向的路径 Read Process ASP.NET 读取配置文件并监视此文件夹中的文件更改。

系统根目录:

C:\WINNT\system32 Read Process 适用于 Framework 加载的系统 DLL。

应用程序文件夹层次结构

C:C:\inetpubC:\inetpub\wwwrootC:\inetpub\wwwroot\mywebapp1 List Folder/Read Process 对于文件更改通知和 C# 编译器(为使文件规范化),Procss 帐户需要应用程序文件夹层次结构的列表文件夹和读取数据权限。这是返回到根目录所经过的全部父文件夹。

配置 ASP.NET,从而使用新帐户来运行

此过程通过编辑 machine.config 来将 ASP.NET 配置为使用新帐户来运行。

要将 ASP.NET 配置为使用新帐户来运行,请执行下列步骤:

1. 在命令提示符下,运行 aspnet_setreg.exe 以将自定义帐户的用户名和密码的加密版本添加到注册表中。有关此实用工具的详细信息及其下载,请参阅 Microsoft 知识库文章 329290“HOWTO: Use the ASP.NET Utility to Encrypt Credentials and Session State Connection Strings”,位于 : http://support.microsoft.com/default.aspx?scid=329290.

aspnet_setreg–k:SOFTWARE\YourSecureApp\processModel

–u:"CustomASPNET"–p:"YourStrongPassword"

2. 使用 Visual Studio.NET 或记事本打开 machine.config。

Machine.config 位于下列文件夹中:

C:\WINNT\Microsoft.NET\Framework\v1.0.3705\CONFIG

3. 定位到 <processModel> 元素并将 userName 和 password 属性设置为包含下列指向加密凭据详细信息的字符串。

Default:

<processModel userName="machine" password="AutoGenerate" . . ./>

Becomes:

<processModel

userName="registry:HKLM\SOFTWARE\YourSecureApp\processModel ASPNET_SETREG,userName"

password="registry:HKLM\SOFTWARE\YourSecureApp\processmodel ASPNET_SETREG,password" . . . />

4. 将更改保存到 machine.config 中

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有