首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CreateUserWizard用户名和电子邮件枚举

CreateUserWizard用户名和电子邮件枚举
EN

Stack Overflow用户
提问于 2014-05-29 18:48:26
回答 2查看 343关注 0票数 0

我一直在对我们的网站进行安全审查,发现了CreateUserWizard的一个问题。我们不允许人们注册一个重复的电子邮件地址或用户名。CreateUserWizard将为我验证这一点,但问题是,我可以编写一个脚本来访问我们的服务器并尝试用户名,并且可以很快地通过枚举获得用户名列表。

我想添加recaptcha,但在验证用户名之前,我似乎无法让它验证这一点。有办法这样做吗?

代码语言:javascript
复制
    <asp:CreateUserWizard ID="CreateUserWizard1" runat="server" OnCreatedUser="CreateUserWizard1_CreatedUser" ContinueDestinationPageUrl="~/PleaseVerify.aspx" CssClass="CreateUserWizard" StepNextButtonStyle-CssClass="NextButton" StartNextButtonStyle-CssClass="NextButton" FinishCompleteButtonStyle-CssClass="FinishButton" CreateUserButtonText="Create my ID"
        CompleteSuccessText="Your account has been created, but before you can login you must first verify your email address. A message has been sent to the email address you specified. Please check your email inbox and follow the instructions in that email to verify your account."
        DisableCreatedUser="True" OnSendingMail="CreateUserWizard1_SendingMail" DuplicateUserNameErrorMessage="That username is already in use, if you think this is you can LINK REMOVED Otherwise try a different username."
        DuplicateEmailErrorMessage="That email is already in use, try to <a href='/ForgotPassword.aspx'>recover your password</a>." InvalidPasswordErrorMessage="Please supply at least five letters in your password.">
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-06-02 21:53:40

我不认为用户名是在客户端验证的,因此您可以重写CreateUserWizard的CreateUserError事件处理程序,检查您的captcha,并且不返回用户名已经在使用的错误。我使用我从www.codinghorror.com (http://www.codinghorror.com/blog/2004/11/captcha-control-coda.html)拼凑在一起的自定义控件captcha,它在后端代码试图创建用户并确定用户名/电子邮件正在使用之前触发。

票数 0
EN

Stack Overflow用户

发布于 2014-06-03 00:22:47

最后,我没有使用create向导,而只是在按钮处理程序中进行简单的登录。

代码语言:javascript
复制
    recaptcha.Validate();
    if (!recaptcha.IsValid)
    {
        ErrorMessage.Text = "Invalid Code.";
        return;
    }
    if (!IsValid)
    {
        return;
    }
    var duplicateEmail = Membership.FindUsersByEmail(Email.Text);
    if (duplicateEmail.Count > 0)
    {
        ErrorMessage.Text = "That email is already in use, try to <a href='/ForgotPassword.aspx'>recover your password</a>.";
        return;   
    }
    var duplicateUsername = Membership.FindUsersByName(UserName.Text);
    if (duplicateUsername.Count > 0)
    {
         ErrorMessage.Text = "That username is already in use, if you think this is you can <a href='http://www.nanaimo.ca/dashboard/'>login</a>, otherwise try a different username.";
         return;   
    }
    var newUser = Membership.CreateUser(UserName.Text, Password.Text, Email.Text);
    newUser.IsApproved = false;
    Membership.UpdateUser(newUser);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23940756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档