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