2

我有一个 asp.net 网络表单项目。在那里,“管理员”能够进入屏幕以提交将创建新用户 (CreateUser.aspx) 的表单。

如果该用户的权限稍后更改为低于管理员权限,他们将无法再访问该屏幕来创建新用户。但是,如果他们保存了作为管理员时创建新用户的确切 Web 请求,他们可以重播此请求并仍然创建新用户。

一个随机的人不可能提交这个表单,除非他们猜到一个活动的会话 id(这是每个表单提交时唯一检查的东西)。

CreateUser 是管理功能的众多示例之一。验证用户是否是每个这些不同表单提交的管理员的正确解决方案(不确定在 asp.net 中执行此操作的干净方法)?或者只是在注销时使会话过期并且从不重复使用会话 ID 是否可以接受?asp.net 是否有任何其他内置的安全功能来防止这种类型的攻击?

4

2 回答 2

1

一种方法是拥有一个基类(它又继承了类-“页面”),并且您的所有 aspx 页面都应该继承这个基类。这样每当加载一个 aspx 页面时,就会调用您的基本 pageLoad 方法。在这种方法中,您可以检查身份验证和授权。

    public class BasePage : System.Web.UI.Page
    {

        public BasePage()
        {
            this.Load += new EventHandler(BasePage_Load);
        }

     void BasePage_Load(object sender, EventArgs e)
        {
     //Check authentication/authorized
    //if authenticated/authorized leave it.. If not redirect to error page
        }
    }

    public partial class Forms_CreateUser : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }

    public partial class Forms_CreateRole : BasePage
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
于 2012-08-03T21:06:43.493 回答
0

用户 web.config 的授权设置,将 CreateUser.aspx 的访问权限限制为管理员角色的用户:http: //support.microsoft.com/kb/316871(属性名称roles而不是users)。

于 2012-08-06T11:51:10.087 回答