【问题标题】:Be more specific in what has failed c# ef4.0更具体地说明失败的原因 c# ef4.0
【发布时间】:2014-02-18 18:21:12
【问题描述】:

我怎样才能更具体地说明失败的原因,即我将如何报告用户名或密码失败,而不仅仅是报告失败。

所以我可以返回用户名正确但密码不正确

   ////////////////////////////////////////////////////////////////////////////////////////////////////
        /// <summary>  Validates the user. </summary>
        ///
        /// <remarks>  Dave, 2/15/2014. </remarks>
        ///
        /// <exception cref="EntityContextException">  Thrown when an Entity Context error condition
        ///                                            occurs. </exception>
        ///
        /// <param name="username">    The username. </param>
        /// <param name="password">    The password. </param>
        ///
        /// <returns>  The NaviHrUsers. </returns>
        ////////////////////////////////////////////////////////////////////////////////////////////////////

        public NaviHrUsers ValidateUser(string username, string password)
        {

            try
            {
                NaviHrUsers currentUser = naviEntities.NaviHrUsers.FirstOrDefault(r => r.login == username && r.password == password);

                if (currentUser != null)
                {
                    return currentUser;
                }

                else
                {
                    return null;
                }
            }
            catch (Exception ex)
            {
                throw new EntityContextException("ValidateUser failed.", ex);
            }
        }

【问题讨论】:

  • 你为什么想要这样的东西?这可能会让一些攻击者找出您的用户名,然后他/她可以为同一个用户名尝试不同的密码。
  • 正如其他人所说,不要这样做。但是如果你确定了,你可以查询用户名,如果失败则知道用户名错误,如果成功则检查密码

标签: c# winforms entity-framework entity-framework-4


【解决方案1】:

让用户知道用户名正确但密码不正确是一种糟糕的安全做法。这使攻击者能够再次猜测密码。

【讨论】:

  • 另外,请不要将密码存储为纯文本。
猜你喜欢
  • 2011-07-16
  • 2020-11-03
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 2022-11-27
相关资源
最近更新 更多