如何使管理站点安全?

时间:2009-11-04 17:04:20

标签: asp.net security admin

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

到目前为止我所拥有的:

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

它真的有多安全吗?


编辑:

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

2 个答案:

答案 0 :(得分:1)

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

主要是 HOW 您正在获取要验证的userID。这就是漏洞发生的地方。保护这个过程,你应该对你的设置没问题。

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

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

答案 1 :(得分:0)

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

  1. 在IIS管理器中,单击“目录安全性”选项卡
  2. 取消选中“匿名访问”
  3. 选中“集成Windows身份验证”
  4. 这使您可以通过修改域帐户而不是使用自己动手解决方案来管理谁拥有管理站点的权限。您仍然可以通过Environment类获取登录用户的凭据,该类可用于关联要存储在数据库中的每个用户的任何特定于Web的属性。这还具有自动处理超时,浏览器关闭时重新连接要求等优点。

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