Mysql 限制密码的字符数?

Mysql 限制密码的字符数?,mysql,database,Mysql,Database,如果想限制我的数据库(mysql)中密码可能使用的字符数,我是否只需将类型设置为varchar(#of chars),例如:varchar(15)。对于最多可使用的15个字符?当然,您可以通过在数据库中设置某个内容的字段长度来限制其长度。但这会让用户感到困惑。有人可能会认为他输入了20-30个或更多字符,这是在使用强密码,但您只是在静默地存储前15个字符。如果他更改了密码,并且只更改了最后几个字符,那以后可能会给他带来麻烦——对你来说,这将是相同的15个字符的密码。非常令人费解 如果您确实限制了

如果想限制我的数据库(mysql)中密码可能使用的字符数,我是否只需将类型设置为varchar(#of chars),例如:varchar(15)。对于最多可使用的15个字符?

当然,您可以通过在数据库中设置某个内容的字段长度来限制其长度。但这会让用户感到困惑。有人可能会认为他输入了20-30个或更多字符,这是在使用强密码,但您只是在静默地存储前15个字符。如果他更改了密码,并且只更改了最后几个字符,那以后可能会给他带来麻烦——对你来说,这将是相同的15个字符的密码。非常令人费解

如果您确实限制了长度,请在检查长度后,在UI中用说明和良好的错误消息非常清楚地说明这一点


但更好的是,不要限制密码长度。密码越长越好

当然,您可以通过在数据库中设置某个内容的字段长度来限制其长度。但这会让用户感到困惑。有人可能会认为他输入了20-30个或更多字符,这是在使用强密码,但您只是在静默地存储前15个字符。如果他更改了密码,并且只更改了最后几个字符,那以后可能会给他带来麻烦——对你来说,这将是相同的15个字符的密码。非常令人费解

如果您确实限制了长度,请在检查长度后,在UI中用说明和良好的错误消息非常清楚地说明这一点


但更好的是,不要限制密码长度。密码越长越好

我认为你在密码问题上的心态非常糟糕。在使用密码时,请记住以下几点

  • 永远不要在数据库中存储普通密码。所有密码在存储前都应进行哈希运算。行业标准的方法是使用bcrypt散列。它创造了一个新的环境

  • 密码越长,破解就越困难。这意味着理想情况下,您不应该限制密码中的最大字符数。另一方面,限制最小字符数是一个好主意

  • 阅读密码盐析。这是一种增加密码安全性的方法。bcrypt库为您做到了这一点——您应该让它发生,而不是试图提出您自己的解决方案

  • 如果确实需要限制密码中的字符数,请以编程方式进行。通过这种方式,您可以通知用户它超出了限制。如果您不知道@n8wrl的答案中描述了一个场景


  • 如果我遗漏了什么,请将其保留在评论中,我将相应地编辑答案。

    我认为您在密码方面的心态非常糟糕。在使用密码时,请记住以下几点

  • 永远不要在数据库中存储普通密码。所有密码在存储前都应进行哈希运算。行业标准的方法是使用bcrypt散列。它创造了一个新的环境

  • 密码越长,破解就越困难。这意味着理想情况下,您不应该限制密码中的最大字符数。另一方面,限制最小字符数是一个好主意

  • 阅读密码盐析。这是一种增加密码安全性的方法。bcrypt库为您做到了这一点——您应该让它发生,而不是试图提出您自己的解决方案

  • 如果确实需要限制密码中的字符数,请以编程方式进行。通过这种方式,您可以通知用户它超出了限制。如果您不知道@n8wrl的答案中描述了一个场景


  • 如果我遗漏了任何内容,请将其保留在评论中,我将相应地编辑答案。

    您应该仔细阅读密码哈希。限制密码的长度很少是一个好主意。请不要限制密码的长度。另外,不要限制密码的字符集。始终哈希密码并存储哈希,而不是明文密码。这意味着当旧密码被遗忘时,需要一种机制来设置新密码。你应该仔细阅读密码散列。限制密码的长度很少是一个好主意。请不要限制密码的长度。另外,不要限制密码的字符集。始终哈希密码并存储哈希,而不是明文密码。这意味着需要有一种机制来在忘记旧密码时设置新密码。1.)md5不是加密。3.)Salting不为所使用的登录提供安全性。它只避免了使用rainbow表从散列中重构密码。(还可以确保,如果攻击者获得访问权限,他不能用一个“go”来重建所有密码,但每个密码需要一个salt)请不要建议使用MD5进行密码哈希。永远。你是对的。我想说的是密码应该加密或散列。这并不意味着MD5是一种加密算法。就salting而言,如果有人已经设法获得了您的DB,那么您仍然是正确的。但是,根据您创建salt的方式,它可以是一种附加的安全性。MD5是一种哈希算法,而不是加密算法,但人们反对它的理由是,现在它太快了,因此如果您不想强制检索密码,就不安全。是的,但安全性会继续提高。我经常看到的问题之一是,初学者不仅编写“直接投入生产”的代码,而且编写教程。很多,而且大多都很糟糕。SQL注入、XSS、明文密码、无盐析和不充分的散列。我们需要小心,我们没有助长这些不良做法。1.)md5不是加密。3.)Salting不为所使用的登录提供安全性。它只避免了使用rainbow表从散列中重构密码。(Al)