Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net身份验证检查_Asp.net_Security - Fatal编程技术网

Asp.net身份验证检查

Asp.net身份验证检查,asp.net,security,Asp.net,Security,我有一个asp.net webforms项目。在需要保护的所有领域中,在整个应用程序中添加业务逻辑身份验证检查的标准方法是什么 例如,第X页只能由标记为“Admin”的人查看 一个更复杂的示例:只有属于管理用户A、B和C的一组人员的用户才能修改用户A、B或C的配置文件信息 我可以继续进行数百个地方和类型的身份验证检查,但基本上我知道的唯一方法是在每个按钮单击处理程序、页面加载、GridView行更改等的开头运行大量自定义代码,这些代码将首先检查一些业务逻辑,然后允许或返回 更一般地说,基本上每次

我有一个asp.net webforms项目。在需要保护的所有领域中,在整个应用程序中添加业务逻辑身份验证检查的标准方法是什么

例如,第X页只能由标记为“Admin”的人查看

一个更复杂的示例:只有属于管理用户A、B和C的一组人员的用户才能修改用户A、B或C的配置文件信息

我可以继续进行数百个地方和类型的身份验证检查,但基本上我知道的唯一方法是在每个按钮单击处理程序、页面加载、GridView行更改等的开头运行大量自定义代码,这些代码将首先检查一些业务逻辑,然后允许或返回


更一般地说,基本上每次回发都需要进行这些业务逻辑身份验证检查吗?

如果检查是基于角色的,而且很粗,例如“Admin”角色可以执行此页面上的所有代码,但其他人不能执行,则使用缓存在FormsAuthentication cookie中的角色和PrinciplePermission属性,例如,您还可以将这些属性放在方法上。但是,它们不允许复杂的授权检查,并且不需要重新编译代码就不容易更改

如果检查仅部分基于角色且是细粒度的,例如秘书可以单击此项,管理员可以查看此项,Joe可以在周末查看此项,等等。那么您需要在代码中进行授权检查。除非可以将结果缓存到安全的地方,否则必须重新执行授权检查。如果ViewState已加密,则可以在ViewState中缓存结果

如果在回发时不检查授权,则很容易受到定制的帖子的攻击,这些帖子会调用禁用按钮、不可见按钮等上的事件。通过加密viewstate并保持事件验证处于打开状态,您也可以缓解此类问题


将您的代码划分为实用程序类和基类,以尽量减少重复。

如果检查基于角色且内容庞大,例如“管理员”角色可以执行此页面上的所有代码,但其他人不能执行,则使用FormsAuthentication cookie中缓存的角色和PrinciplePermission属性,例如,您还可以将这些属性放在方法上。但是,它们不允许复杂的授权检查,并且不需要重新编译代码就不容易更改

如果检查仅部分基于角色且是细粒度的,例如秘书可以单击此项,管理员可以查看此项,Joe可以在周末查看此项,等等。那么您需要在代码中进行授权检查。除非可以将结果缓存到安全的地方,否则必须重新执行授权检查。如果ViewState已加密,则可以在ViewState中缓存结果

如果在回发时不检查授权,则很容易受到定制的帖子的攻击,这些帖子会调用禁用按钮、不可见按钮等上的事件。通过加密viewstate并保持事件验证处于打开状态,您也可以缓解此类问题

将代码分解为实用程序类和基类,以最大限度地减少重复