IIS、ASP.NET和SQLServer的安全性问题
2007-11-11 11:38:29 来源:WEB开发网核心提示: 此时,IIS 将在一个权限有限的自定义帐户下运行,IIS、ASP.NET和SQLServer的安全性问题(2),任何访问者访问您应用程序的网页时,都将以这个自定义用户身份运行, 至此,您已生成了自定义用户,且只具有该自定义用户的验证权限, 授权 DotNetKB 用户帐户访问 sql server(WINDOWS平台
此时,IIS 将在一个权限有限的自定义帐户下运行。任何访问者访问您应用程序的网页时,都将以这个自定义用户身份运行,且只具有该自定义用户的验证权限。
授权 DotNetKB 用户帐户访问 sql server(WINDOWS平台上强大的数据库平台)
然后,您需要为该自定义用户授予访问数据库 (DotNetKB) 的相应权限。为此,您可以使用 Microsoft sql server(WINDOWS平台上强大的数据库平台) 企业管理器或编写一个自定义脚本,以创建一个这样的用户并授予其访问特定对象的权限。本文介绍如何使用 sql server(WINDOWS平台上强大的数据库平台) 企业管理器完成此操作。
注意:尽管 Visual Studio .NET 2003 具有与 sql server(WINDOWS平台上强大的数据库平台) 兼容的许多强大的集成功能,但也不允许从 Visual Studio .NET 2003 中轻松管理用户和用户权限。在大型的组织和团队中,这些高级任务通常由数据库管理员完成。 因此,启动 sql server(WINDOWS平台上强大的数据库平台) 企业管理器之后,您可以按照以下步骤将自定义用户 (DotNetKB) 添加数据库中。
·在左侧的树视图中,展开节点以显示 DotNetKB 数据库。在我的计算机上,树视图的结构如下:Console Root sql server(WINDOWS平台上强大的数据库平台) Group (LOCAL) (Windows NT) Databases DotNetKB。
·然后,在数据库下的 Users(用户)节点上单击鼠标右键,并选择 New Database User...(新建数据库用户...)。显示 Database User Properties - New User(数据库用户属性 - 新建用户)对话框时,从 Login name(登录名)下拉框中选择 (<新建>)。
·显示 sql server(WINDOWS平台上强大的数据库平台) Login Properties - New Login(sql server(WINDOWS平台上强大的数据库平台) 登录属性 - 新建登录)对话框时,选择 General(常规)选项卡,并在 Name(名称)输入框中输入 DotNetKB。确保选中 Windows Authentication(Windows 验证)单选按钮,并从 Domain(域)下拉框中选择自定义用户帐户所在的计算机的名称。然后从 Database(数据库)下拉框中选择 DotNetKB。
·现在,选择 Databases(数据库)选项卡,在对话框顶部的列表中找到 DotNetKB 数据库并选中它。然后,确保选中对话框底部列表中的 public(公共)角色。最后,单击对话框底部的 OK(确定)按钮,保存您的更改。 然后,您需要为 DotNetKB 数据库中的所有存储过程和自定义函数添加执行权限。为此,您只需为 public(公共)角色授予权限。您可以将权限授予 DotNetKB 用户,这样将使以后的登录(当这些用户获得访问 DotNetKB 的权限时)更容易执行存储过程,而不需要为每个用户添加新的权限。
下面是为 DotNetKB 数据库中的存储过程和函数授予执行权限的步骤:
·突出显示树视图中 DotNetKB 数据库下的 Users(用户)节点,以显示此数据库的用户列表。找到 DotNetKB 用户并在其上双击,打开 Database Users Properties(数据库用户属性)对话框。
·突出显示(选中)public(公共)角色时,单击 Properties...(属性...)按钮,打开 Database Role Properties(数据库角色属性)对话框。然后单击 Permissions...(权限...)按钮,显示数据库对象和权限设置列表。
·选中对话框顶部 Database role(数据库角色)下拉列表中的 public(公共)角色之后,找到为此数据库定义的所有存储过程和自定义函数(可能需要展开对话框才能看到全名),并确保选中各项旁边的 EXECUTE(执行)复选框。您可能会发现某些系统对象的其他一些复选框也被选中了,请不要更改这些选项。
·最后,设置所有的 EXECUTE(执行)权限后,单击 OK(确定)按钮,保存更改并关闭对话框。依次单击 OK(确定)按钮,直到所有对话框均被关闭。
至此,您已为 IIS 创建了自定义用户,并设置了该用户在 sql server(WINDOWS平台上强大的数据库平台) 中的相应权限。现在,您需要在 ASP.NET Web 项目中进行一个配置更改,确保 ASP.NET 使用同一个用户帐户执行对 sql server(WINDOWS平台上强大的数据库平台) 的所有调用。
设置您的 ASP.NET 应用程序以模拟 DotNetKB 用户
为 IIS 下运行的 ASP.NET Web 应用程序生成坚实可靠的配置的最后一个步骤是:配置 ASP.NET Web 应用程序,使之能够接受来自 IIS 的 Windows 用户标识并能用于访问其他操作系统资源。为此,您只需在 web.config 根文件中输入一行代码。
修改后的 web.config 文件如下所示:
... 其他要素 ...
... 其他要素 ...
请注意,您只需添加 元素并将模拟特性设置为 true(真)。不必输入用户帐户或密码,因为这些信息将由 IIS 提供。也就是说,即使其他人能够读取您的配置文件,他们也无法确定使用哪些标识凭据来执行您的 Web 应用程序。
至此,您已生成了自定义用户,并为其设置了访问 sql server(WINDOWS平台上强大的数据库平台) 和 IIS 的相应权限。
授权 DotNetKB 用户帐户访问 sql server(WINDOWS平台上强大的数据库平台)
然后,您需要为该自定义用户授予访问数据库 (DotNetKB) 的相应权限。为此,您可以使用 Microsoft sql server(WINDOWS平台上强大的数据库平台) 企业管理器或编写一个自定义脚本,以创建一个这样的用户并授予其访问特定对象的权限。本文介绍如何使用 sql server(WINDOWS平台上强大的数据库平台) 企业管理器完成此操作。
注意:尽管 Visual Studio .NET 2003 具有与 sql server(WINDOWS平台上强大的数据库平台) 兼容的许多强大的集成功能,但也不允许从 Visual Studio .NET 2003 中轻松管理用户和用户权限。在大型的组织和团队中,这些高级任务通常由数据库管理员完成。 因此,启动 sql server(WINDOWS平台上强大的数据库平台) 企业管理器之后,您可以按照以下步骤将自定义用户 (DotNetKB) 添加数据库中。
·在左侧的树视图中,展开节点以显示 DotNetKB 数据库。在我的计算机上,树视图的结构如下:Console Root sql server(WINDOWS平台上强大的数据库平台) Group (LOCAL) (Windows NT) Databases DotNetKB。
·然后,在数据库下的 Users(用户)节点上单击鼠标右键,并选择 New Database User...(新建数据库用户...)。显示 Database User Properties - New User(数据库用户属性 - 新建用户)对话框时,从 Login name(登录名)下拉框中选择 (<新建>)。
·显示 sql server(WINDOWS平台上强大的数据库平台) Login Properties - New Login(sql server(WINDOWS平台上强大的数据库平台) 登录属性 - 新建登录)对话框时,选择 General(常规)选项卡,并在 Name(名称)输入框中输入 DotNetKB。确保选中 Windows Authentication(Windows 验证)单选按钮,并从 Domain(域)下拉框中选择自定义用户帐户所在的计算机的名称。然后从 Database(数据库)下拉框中选择 DotNetKB。
·现在,选择 Databases(数据库)选项卡,在对话框顶部的列表中找到 DotNetKB 数据库并选中它。然后,确保选中对话框底部列表中的 public(公共)角色。最后,单击对话框底部的 OK(确定)按钮,保存您的更改。
下面是为 DotNetKB 数据库中的存储过程和函数授予执行权限的步骤:
·突出显示树视图中 DotNetKB 数据库下的 Users(用户)节点,以显示此数据库的用户列表。找到 DotNetKB 用户并在其上双击,打开 Database Users Properties(数据库用户属性)对话框。
·突出显示(选中)public(公共)角色时,单击 Properties...(属性...)按钮,打开 Database Role Properties(数据库角色属性)对话框。然后单击 Permissions...(权限...)按钮,显示数据库对象和权限设置列表。
·选中对话框顶部 Database role(数据库角色)下拉列表中的 public(公共)角色之后,找到为此数据库定义的所有存储过程和自定义函数(可能需要展开对话框才能看到全名),并确保选中各项旁边的 EXECUTE(执行)复选框。您可能会发现某些系统对象的其他一些复选框也被选中了,请不要更改这些选项。
·最后,设置所有的 EXECUTE(执行)权限后,单击 OK(确定)按钮,保存更改并关闭对话框。依次单击 OK(确定)按钮,直到所有对话框均被关闭。
至此,您已为 IIS 创建了自定义用户,并设置了该用户在 sql server(WINDOWS平台上强大的数据库平台) 中的相应权限。现在,您需要在 ASP.NET Web 项目中进行一个配置更改,确保 ASP.NET 使用同一个用户帐户执行对 sql server(WINDOWS平台上强大的数据库平台) 的所有调用。
设置您的 ASP.NET 应用程序以模拟 DotNetKB 用户
为 IIS 下运行的 ASP.NET Web 应用程序生成坚实可靠的配置的最后一个步骤是:配置 ASP.NET Web 应用程序,使之能够接受来自 IIS 的 Windows 用户标识并能用于访问其他操作系统资源。为此,您只需在 web.config 根文件中输入一行代码。
修改后的 web.config 文件如下所示:
... 其他要素 ...
... 其他要素 ...
请注意,您只需添加 元素并将模拟特性设置为 true(真)。不必输入用户帐户或密码,因为这些信息将由 IIS 提供。也就是说,即使其他人能够读取您的配置文件,他们也无法确定使用哪些标识凭据来执行您的 Web 应用程序。
至此,您已生成了自定义用户,并为其设置了访问 sql server(WINDOWS平台上强大的数据库平台) 和 IIS 的相应权限。
[]
赞助商链接