1

这是我第一次尝试构建安全的 Web 应用程序。它将在 Internet 上,它包括一个 IIS 服务器(由 ISP 托管)和 SQL 2008 db(也由 ISP 托管)。

作为一个快速而肮脏的测试,我只是在 Visual Studio 中使用模板。我只使用 ASP.NET 配置工具上的向导配置了身份验证。但是,这会创建一个隐藏在 Web 应用程序中的数据库。

我更愿意将用户凭据保留在 SQL 服务器上,因为这似乎是允许可伸缩性的最佳实践。但是,我该怎么做?我对数据库的访问权限有限——我可以创建表,但我认为我无法在服务器上运行任何工具来创建正确的模式。谁能指出我正确的方向?做了一些谷歌搜索,但一直看到 ASP.NET 1.1 文章,这让我觉得我可能遗漏了一些东西,并且在 ASP.NET 4.0 中有更好的方法来做到这一点。

4

2 回答 2

2

在 SQL Server 中创建一个存储用户登录名和密码的用户表。您可以对密码进行哈希处理,这样即使管理员自己(包括您自己)也看不到它。然后在表单身份验证期间使用 LINQ 拉取,以根据用户表检查登录名/密码。

您还可以使用嵌入式 SQL 或存储过程来代替 LINQ。但是,嵌入式 SQL 是高度不安全的,因此留下了存储过程和 Linq。如果您熟悉它,我更喜欢使用 Linq。或者使用最安全的存储过程。

于 2012-05-10T17:34:08.993 回答
1

您不必“必须”使用整个 ASP.Net Membership 框架来使用 Forms 身份验证。它为你做了很多工作(安全等),所以如果可以的话,最好使用它——如果你刚开始的话,更是如此。

您可以将表单身份验证与您想要的任何身份验证方案一起使用(预先存在的或您自己创建的东西)。这是一个过于简单的示例,您可以在其中看到您甚至可以对身份验证方案进行硬编码(不是您应该这样做,但它向您展示了可能性)。

最后,如果您无法运行命令行 ASP.Net 工具aspnet_regsql.exe,则用于创建架构的 sql 脚本位于:C:\Windows\Microsoft.NET\Framework\[Framework version].

所以对于.Net 4,它将是:C:\Windows\Microsoft.NET\Framework\v4.0.30319

安装和“卸载” sql 脚本都在那里 - 例如

  • 安装会员.sql
  • 卸载会员.sql

... 等等....

于 2012-05-11T04:51:45.020 回答