Laravel的应用程序密钥 - 它是什么以及它是如何工作的?

Yas*_*nov 13 php frameworks laravel

据我所知,Laravel中的app键为会话和敏感数据提供保护,但我想了解的是它究竟是如何工作的?它的用途是什么?我找不到任何有关它的信息.提前致谢!

Paw*_*zad 9

这里的评论说它用于ecrypter.我发现这里这里所使用openssl_encryptopenssl_decrypt.没有该密钥,您无法解密使用这两个功能加密的任何内容,例如存储在用户计算机上的会话cookie.如果他们没有加密,任何有权访问它们的人都可以像你一样登录应用程序.


Erf*_*ash 8

在哪里使用:

在您的应用程序中使用加密(非散列)的每个 Laravel 组件都使用 APP_KEY。(会话、CSRF 令牌和 Cookie)

不使用的地方:

larvel 使用hashing 的地方,比如Passwords, password_reset_token

因此,更改 APP_KEY 不会对您的密码或 password_reset 令牌造成任何问题。

这个怎么运作:

APP_KEY 是您的应用程序中没有人知道的私有字符串(encryption_key)。因此,如果只有您的应用程序知道该密钥,则只有您的应用程序才能解密由该密钥加密的数据。这就是其安全性的工作原理。

** 有关其功能如何工作的更多信息,您只需在您的项目中检查此文件:EncryptionServiceProvider.php

一些最佳实践是:

  • 仅将其存储在 .env 文件中。(不要将其存储在 config/app.php 或任何 GIT 跟踪文件中)
  • 仅在出现以下情况时才更改它:
    • 您发现您的密钥可能被泄露。(因此其他人可以解密您的数据)
    • 您想注销所有用户(由会话管理的用户而不是 api 令牌)
    • 您想要使 cookie 无效。


Sau*_*shi 5

APP_KEY用于加密而不是哈希。您在应用程序中加密的每个数据都在后台使用APP_KEY。请记住,加密的数据可以解密,但散列的数据不能解密。

对APP_KEY的常见误解是它与密码哈希相关,事实并非如此。这是证明。

泰勒的推文

您可以在上面的推文中看到APP_KEY与HASHED数据无关