3

非常简单的问题:我的网络项目中有管理站点。那么,我怎样才能让它安全呢?

到目前为止我所拥有的:

  • 具有用户 ID 和用户级别的数据库处理用户
  • 在管理主页面(包括所有管理站点)的页面加载上,有一个子句来检查用户 ID 是否正常(从数据库中获取用户)以及用户级别是否正确
  • 如果不是,则使用普通母版页重定向到 Default.aspx
  • 如果是,请努力

它到底有多安全?


编辑:

  • 用户 ID 保存在服务器上的会话中。
  • 无法保存登录信息(无 cookie)。
  • 用户必须登录才能在会话中获取用户 ID
  • 登录信息保存在数据库表 user_log 中,其中包含用户名、密码、ip、loginsucceeded 和 userID
4

2 回答 2

1

基本思路看起来不错。这一切都取决于您如何获取该 UserID 来进行检查。如果用户 ID 作为查询字符串传递,那么这是非常糟糕的。如果它通过某种类型的预授权存储在会话中,那么它会更好。如果您使用 SSL、IP 检查等,它将提高您的安全级别。

主要的是您如何获取要验证的用户 ID。这就是漏洞发生的地方。确保该过程安全,您的设置应该没问题。

编辑:根据您的更新,这看起来不错,但也取决于您真正需要它的安全性。您的登录页面有多安全?你在使用 SSL 吗?担心会话劫持?在从会话中获取用户 ID 时,为什么不使用用户 ID 存储 IP 并根据存储的 IP 验证请求 IP?

那里有很多安全解决方案。您需要确定您需要安全走多远才能确保特定应用程序所需的安全级别。

于 2009-11-04T17:12:49.467 回答
0

我们使用集成的 Windows 身份验证。

  1. 在 IIS 管理器中,单击“目录安全”选项卡
  2. 取消选中“匿名访问”
  3. 选中“集成 Windows 身份验证”

这使您可以通过修改域帐户而不是使用您自己的解决方案来管理谁有权访问您的管理站点。您仍然可以通过 Environment 类获取登录用户的凭据,该类可用于为您要存储在数据库中的每个用户关联任何特定于 Web 的属性。这还具有自动处理超时、关闭浏览器时重新登录要求等的优点。

您的解决方案看起来几乎没有问题,尽管听起来好像您正在将单个用户帐户添加到 SQL 服务器,而不是通过 ASP.NET 服务帐户登录来处理所有事情。我会避免将个人用户帐户添加到您的数据库中。在 ASP.NET 中,除非您跳过一些无用的障碍,否则 ASP.NET 服务帐户是为 DB 连接进行身份验证的对象,而不是登录到该站点的用户。

于 2009-11-04T17:12:06.377 回答