Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 这个密码能更安全吗?_Php_Mysql - Fatal编程技术网

Php 这个密码能更安全吗?

Php 这个密码能更安全吗?,php,mysql,Php,Mysql,如何使密码更安全,我当前的代码是: 有没有一种方法可以在不牺牲大量资源的情况下使这一点更加安全 如通过SHA512或其他方法?您可以将算法更改为使用SHA512或河豚 看 您还可以考虑在用户创建帐户(或更新密码)时为每个用户生成一个唯一的salt,这将在发现salt时将风险限制在单个帐户上。您可以将算法更改为使用SHA512或Blowfish 看 您还可以考虑在每个用户创建其帐户(或更新其密码)时为其生成唯一的salt,这将在发现salt时将风险限制在单个帐户上。md5()-计算字符串的md

如何使密码更安全,我当前的代码是:


有没有一种方法可以在不牺牲大量资源的情况下使这一点更加安全


如通过SHA512或其他方法?

您可以将算法更改为使用SHA512或河豚


您还可以考虑在用户创建帐户(或更新密码)时为每个用户生成一个唯一的salt,这将在发现salt时将风险限制在单个帐户上。

您可以将算法更改为使用SHA512或Blowfish

您还可以考虑在每个用户创建其帐户(或更新其密码)时为其生成唯一的salt,这将在发现salt时将风险限制在单个帐户上。

md5()-计算字符串的md5哈希值

哈希()-生成哈希值(消息摘要)

uniqid()-生成唯一的ID

增加:

sha1()-计算字符串的sha1哈希

请参见

md5()-计算字符串的md5哈希值

哈希()-生成哈希值(消息摘要)

uniqid()-生成唯一的ID

增加:

sha1()-计算字符串的sha1哈希


只需看看

使用hash_hmac比普通hash(md5/sha等)更好

虽然我不明白你用$U盐。如果每次生成一个新的salt,它将如何与数据库中的密码匹配

好的,如果动态盐是按用户存储的

$newRequesterPass = hash_hmac('sha256', $newRequesterPass, $dynamic_salt.$static_salt);

使用hash_hmac比普通散列(md5/sha等)更好

虽然我不明白你用$U盐。如果每次生成一个新的salt,它将如何与数据库中的密码匹配

好的,如果动态盐是按用户存储的

$newRequesterPass = hash_hmac('sha256', $newRequesterPass, $dynamic_salt.$static_salt);

除了建议使用更强大的散列之外,安全密码管理还涉及到管理代码,它不仅仅以salted+散列形式存储密码。你做了多少取决于应用程序的业务需求,但是考虑以下内容:

  • 密码验证——您可能希望强制使用某些字符(例如字母+数字、大写+小写等)

  • 多个散列(例如,将密码散列1000次)确定这可能违反您的“资源不多”条件:)

  • 过期--密码应设置为在某个时间(例如1年)过期,以便您希望在用户成功登录后立即在该时间之前(例如10个月)警告用户更改密码

  • 通道处理——显然,密码应该通过SSL通道发送,而不是以明文形式发送。不要依赖客户端javascript来保护密码。但是你应该做的不仅仅是通过https发布密码,整个登录序列需要在https中进行

  • 忘记密码策略。不要通过电子邮件将密码发送给他们。向他们发送重置密码的链接,并使用脱机确认频道(例如,发送跟进电子邮件通知他们密码已更改)

  • 看看这里


    更新:请澄清,不要尝试使用自己的工具进行会话管理或密码散列。除非您是真正的专家,否则请使用标准工具。

    除了建议使用更强大的散列之外,安全密码管理还包括管理代码,其作用不仅仅是将密码存储在salt+散列形式。你做了多少取决于应用程序的业务需求,但是考虑以下内容:

  • 密码验证——您可能希望强制使用某些字符(例如字母+数字、大写+小写等)

  • 多个散列(例如,将密码散列1000次)确定这可能违反您的“资源不多”条件:)

  • 过期--密码应设置为在某个时间(例如1年)过期,以便您希望在用户成功登录后立即在该时间之前(例如10个月)警告用户更改密码

  • 通道处理——显然,密码应该通过SSL通道发送,而不是以明文形式发送。不要依赖客户端javascript来保护密码。但是你应该做的不仅仅是通过https发布密码,整个登录序列需要在https中进行

  • 忘记密码策略。不要通过电子邮件将密码发送给他们。向他们发送重置密码的链接,并使用脱机确认频道(例如,发送跟进电子邮件通知他们密码已更改)

  • 看看这里


    更新:请澄清,不要尝试使用自己的工具进行会话管理或密码散列。除非您是真正的专家,否则请使用标准工具。

    您所掌握的只是“隐蔽性安全”——一种创建密码哈希的非常复杂的方法

    如果您对有人破坏您的数据库和破解哈希感到烦恼,您应该使用bcrypt

    如果你不是,那么使用一些标准的东西(md5很流行)——这只提供表面上的防裂保护

    请注意,需要有人破坏您的数据库,才能以这种方式进行字典或暴力攻击


    我强烈建议你不要自己“发明”加密算法,要使它们正确(或至少使它们安全)是非常困难的。

    你所得到的只是“隐蔽的安全”——一种创建密码散列的非常复杂的方法

    如果您对有人破坏您的数据库和破解哈希感到烦恼,您应该使用bcrypt

    如果你不是,那么使用一些标准的东西(md5很流行)——这只提供表面上的防裂保护

    请注意,需要有人破坏您的数据库才能使用字典