gpt4 book ai didi

c# - 页面加载的 PrincipalPermission

转载 作者:太空宇宙 更新时间:2023-11-03 14:11:24 25 4
gpt4 key购买 nike

我是 Asp.NET 成员功能使用方面的新手,我想知道使用如下代码拒绝访问整个页面是否是一个好习惯:

public partial class AdminPage : Page
{
[PrincipalPermission(SecurityAction.Demand, Role = "Administrators")]
protected void Page_Load(object sender, EventArgs e)
{
...
}
}

我怀疑这不是一个好的做事方式,但我想知道为什么!

谢谢。

最佳答案

小点--把属性放在类上。一旦您在没有适当权限的情况下导航到该页面,这将导致该页面引发安全异常。要阻止用户查看此页面,请在显示 URL 之前检查他们的凭据。类上的属性是普通用户不会运行该类中一行代码的有力保证。

是的,这是一项很好的技术,原因如下:

该属性在线程原则和 HttpContext 用户对象设置时起作用,具有合适的 IPrincipal 和 IIdentity。 (所有这些都将在全局 asax 的请求身份验证事件中发生)这些接口(interface)由 Microsoft 定义,有据可查,并且在任何上下文中都可用,任何在 MS 操作系统上运行的应用程序。因此,您从街上抓到的任何半能干的开发人员在开始阅读您的代码之前都可能熟悉这一点。

此外,由于 Microsoft 使用了 Thread 的 IPrincipal 和 IIdentity(它可能是任何拥有大量用户群的大公司),因此它是经过实战测试的代码。你仍然可以做一些愚蠢的事情,但现有的模式会帮助你掉进成功的陷阱。

另一方面,如果您将自定义对象放入 Session、魔法 cookie 或其他 token 中,那么维护开发人员将不得不从头开始学习它的工作原理,然后检查它是否存在可利用的漏洞。

关于c# - 页面加载的 PrincipalPermission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7765137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com