【问题标题】:ASP.NET non-admin user can access admin-only page using URLASP.NET 非管理员用户可以使用 URL 访问仅管理员页面
【发布时间】:2018-09-10 19:49:54
【问题描述】:

我正在构建一个网站,用户可以登录并查看数据,而管理员可以登录并查看数据以及创建/编辑/删除用户。

我已经创建了这个并且一切正常,用户被带到数据页面,管理员可以选择查看数据页面或用户页面。但是有一个很大的缺陷,当用户登录时,如果在 URL 中输入正确的地址到 EditUser 页面,他们可以查看它,这使他们也可以控制编辑用户。

有没有办法可以拒绝用户查看此页面而只允许管理员?

我确实有一个单独的数据库供管理员和用户使用。

【问题讨论】:

  • 您使用什么类型的身份验证?

标签: c# asp.net


【解决方案1】:

您需要确保您拥有适当的服务器端身份验证和授权(您的所有后端请求都应通过每个用户请求的身份验证和授权)。听起来您可能已经在进行用户身份验证,但您没有进行授权。

简单地说,身份验证就是寻找“谁提出这个请求?”的答案。授权正在寻找“是否允许此用户提出此请求?”的答案。

您的所有后端请求都应验证发出请求的用户(通过将用户名+密码或令牌与数据库中的内容进行匹配),然后您就会知道该用户是普通会员还是管理员.然后确保您的仅适用于管理员的请求仅在经过身份验证的用户具有管理员权限时才有效。

【讨论】:

    【解决方案2】:

    我不建议您创建自己的验证\角色提供程序系统。正确地做到这一点并防止所有可能的攻击以及正确加密和存储登录信息是非常复杂的。使用已经可用的解决方案之一,例如“身份”link

    【讨论】:

      【解决方案3】:

      在我的 ASP.Net Razor 站点中,我检查页面加载的第一件事是查看当前用户是否属于 admin 组,如果不是,我将他们重定向到主页。

      【讨论】:

      • 不错的主意!没想到。谢谢菲尔。
      【解决方案4】:

      您应该为每个登录的管理员创建一个会话,如果您只通过一个链接访问该页面,那么每个人都可以登录。我不是 html 专家,但我认为您应该使用 REST 链接 (https://blog.restcase.com/restful-api-authentication-basics/) 之类的东西

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多