Is wp_generate_password()
与推荐的https://api.wordpress.org/secret-key/1.1/salt/
像@kaiser said API salt生成的内部细节未知,但老实说,API返回一个64个字符的字符串,其中每个字符都是wp_generate_password()
.
请注意,如果服务器具有PHP 7,则用于从92个glyph中选择一个glyph的随机整数将使用PHP 7 CSPRNG 我怀疑API会有比这更强大的功能。在较早的PHP版本中,随机值由mt_rand
.
考虑到这一点,考虑到密码的强大性更多地取决于加密算法,而不是所使用的salt,我可以说,是的,wp_generate_password
很可能与API产生的盐一样安全。
当这种方法回退到数据库中时,数据库中的盐是否会降低安全性。
在这一点上,我同意@kaiser.
让我们假设有人获得了您的数据库转储的副本,用于备份。在数据库转储中,他们可以看到您的用户密码,但已加密。
如果他们能接触到盐,他们就更容易入侵你的网站。
此外,通过了解所使用的salt、用户ID和用户元(存储会话令牌的位置),可以很容易地为任何用户复制nonce值,而无需知道“解密”的密码。
当然,如果恶意用户获得了您的数据库副本,您的安全性将受到严重威胁,但通过在数据库中存储盐,您可以让恶意用户的生活变得更轻松。
不设置这些值并让它们在数据库运行时随机生成,是否有任何安全隐患?
如果盐根本没有凝固,它们是由wp_generate_password()
只有当WP第一次尝试访问它们时,才会将其存储到数据库中,并且在后续请求中,才会从数据库中提取它们。
如前所述wp_generate_password()
其本身并不坏,但由于它们存储在db中,因此其安全性影响正如前一点所述:如果有人可以访问您的db副本,那么如果该db副本包含盐,则更为危险。
然而,当盐使用非安全值时,真正的安全影响是。事实上,如果在配置中设置了弱值,WP将不会生成任何值,但会使用该弱值。。简言之,如果在构型无盐和弱盐之间进行选择,前者肯定更好。
请注意,在WP的最新版本(不确定是哪个版本)中,默认值\'put your unique phrase here\'
被忽略,因此如果wp-config.php
包含任何salt的该值,WordPress将忽略该值并使用生成的值wp_generate_password()
这比存储在config中的弱值好,但比存储在config中的强值差(因为将盐存储在db…)。即使同一盐值用于多次盐,也会使用自动生成的值。
注意:SALT的更改将注销更改前登录您网站的所有用户,包括更改时未登录但在更改前登录时选择了“记住我”选项的用户。
当使用“安装程序”安装WordPress时(无需手动创建wp-config.php
) 盐值是从API提取值生成的。