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防止HTTP重播攻击_Asp.net_Security - Fatal编程技术网

Asp.net防止HTTP重播攻击

Asp.net防止HTTP重播攻击,asp.net,security,Asp.net,Security,我有一个asp.net webforms项目。在那里,“管理员”能够进入屏幕提交一个表单,该表单将创建一个新用户(CreateUser.aspx) 如果该用户的权限后来更改为小于Admin,他们将无法再访问该屏幕以创建新用户。但是,如果他们保存了创建新用户的确切web请求(当他们是管理员时),他们仍然可以重播该请求并创建新用户 但是,随机的人不可能提交此表单,除非他们猜到活动会话id(这是每个表单提交时唯一检查的内容) CreateUser是众多管理函数示例之一。正确的解决方案是验证用户是否是这

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

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

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


CreateUser是众多管理函数示例之一。正确的解决方案是验证用户是否是这些不同表单提交的管理员(不确定在asp.net中是否有一种干净的方法)?还是可以在注销时终止会话,而不重用会话id?asp.net是否内置了任何其他安全功能以防止此类攻击?

一种方法是,使用基类(inturn继承类-“page”),并且所有的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)
        {
        }
    }

用户web.config的授权设置将CreateUser.aspx的访问权限限制为管理员角色的用户:(属性名称为
角色
,而不是
用户