0

我有我的页面的网址,例如:

http://www.ab.com/test.aspx?invitationID=XXXX

我检查了我的 Page_Load 邀请是否真的有效:

if(!IsPostback)
{
   //login for validation. If not valid invitationID do a server.Transfer to 404 page
}

这很好用。但是,一旦用户单击注册页面上的提交按钮。他被重定向到 RegistrationSuccessful 页面。到这里为止它运作良好。但是现在,如果他由于缓存而按下浏览器的后退按钮,他会再次看到该页面并且他可以再次注册。这是一个错误。

我确实添加了:

  HttpContext.Current.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
  HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
  HttpContext.Current.Response.Cache.SetNoStore();

在我的 Page_Load 中,它似乎工作正常。但是,你们认为这种方法有什么安全威胁吗?邀请的验证逻辑是否!IsPostback正确,或者无论是否回发,我都应该这样做吗?

4

2 回答 2

0

好吧,你在哪里保存invitationID一些?如果您将其保存在 db 中,它可能会有所帮助,这样您就可以invitationID通过将其标记为在 db 中使用来了解它已被使用。这样您就可以验证双重注册。

我使用了这种邀请注册,我向 url 链接发送一封电子邮件,然后单击该链接我进行验证。在发送链接之前,我生成一个唯一的字符串并将其保存在关于该用户的数据库中。

于 2012-05-17T05:35:16.670 回答
0

是“http://www.ab.com/test.aspx”的RegistrationPage吗?如果是,则不得对缓存进行任何移动。因为对于注册用户 - RegistrationPage 必须自动重定向到 HomePage。您必须仅在 RegistrationProcedure 中检查 InvitationId:

Regsister(..., Request.QueryString["invitationID"]);

是的,正如 FosterZ 所说 - 您必须将 InvitationId 与数据库中的用户帐户相关联。

于 2012-05-17T05:58:14.977 回答