“身份验证唯一密钥和盐”功能是如何工作的?

时间:2015-05-27 作者:Mikhail Morfikov

我试图找到一些关于WordPress中身份验证密钥和盐如何工作的信息,但不幸的是,我找不到任何有用的信息。我所得到的只是这些键应该是随机的,长的,并且彼此不同。它们应设置在wp-config.php 因为它们通过“确保更好地加密存储在用户cookie中的信息”来“极大地提高了网站的安全性”。

我实际上有一些问题,不仅仅是一个,但我认为它们应该放在一个线程中,因为它们是密切相关的。

“更好的信息加密”到底是什么意思?我的意思是,与没有钥匙的情况相比。

为什么我需要8把钥匙,而不是一把?从名字来看——AUTH, SECURE_AUTH, LOGGED_IN, NONCE -- 他们应该准备四块饼干。一个和两个分别用于通过http和https协议进行身份验证,三个用于记录,四个用于。。。我不知道那是为了什么。

为什么我需要钥匙和盐?这难道不适合钥匙吗?它们很长而且随机,那么在这种情况下添加盐的目的是什么呢?

我读到了另一个问题(我不记得那是在哪里),如果你从wp-config.php 文件,它们将存储在WordPress数据库中wp_options 桌子这是真的,我已经测试过了,这些键被创建并放入表中。但是,当我恢复wp-config.php 文件这两把钥匙wp-config.php 如问题所示,将文件和数据库合并为一个,或者只使用其中一个,如果是,使用哪一个?

当用户访问我的博客时,会发生什么?他有一个帐户,可以查看主页并登录到系统,下一步是什么?我的意思是,这段时间钥匙、饼干(以及其他所有东西)发生了什么?登录WordPress网站的确切过程是什么?

钥匙的最佳尺寸是多少?默认值为64个字符。这里有限制吗?

我可以在键中输入任何字符吗(当然,没有\')? 例如,我可以使用外语字符吗,óŻ? 那么...怎么样© 还有其他人?

1 个回复
最合适的回答,由SO网友:Otto 整理而成

基本上,它们是杂凑盐。它们用于使哈希运算的结果更不可预测。看见https://en.wikipedia.org/wiki/Salt_(cryptography) 有关盐的信息。

AUTH用于/wp admin身份验证cookie,SECURE\\u AUTH用于使用SSL时的身份验证,LOGGED\\u用于标识站点的“前端”。NONCE用于WordPress生成的NONCE,以防止CSRF攻击。

将每个方案的密钥和SALT结合起来,以使用实际的SALT。wp\\u salt函数在此处检查重复的字符串,以确保它们不相同,如果相同,则生成随机字符串。

WordPress优先使用wp配置中的值。php文件。如果它们不可用或彼此重复,则会生成随机数据并存储在数据库中。但是wp配置中定义的值。php优先。

登录时,密码将被验证。然后,生成cookie。这些cookie包含各种信息,这些信息将验证您访问该站点的身份,以备将来访问。cookie中的值会根据许多因素发生变化,包括过期时间、用户名、密码等。基本上,cookie是用户名和密码的一体。该数据使用身份验证密钥和SALT进行哈希处理。在以后的访问中,cookie会随请求一起发送,WordPress会验证其中包含的信息。这证明你就是你,所以你已经登录了。cookie中的值是安全的,因为如果不知道各种盐以及所有其他信息,就无法生成该值。

它们的大小真的无关紧要。它们应该是长的和随机的。没有限制,但存在收益递减点。越长越好,但散列时间越长。大约120个字符之后,这有点过分了。

是的。您可以使用您喜欢的任何数据。不管它是什么,只要它真的是随机的。任何二进制字符串都可以。线路噪音。

结束