Vapor的crypto.json - 部署安全吗?

Dan*_*e P 2 encryption swift vapor

我看到vapor,这crypto.json是用任何项目创建的一部分vapor toolbelt

{
    "hash": {
        "method": "sha256",
        "key": "password"
    },
    "cipher": {
        "method": "chacha20",
        "key": "passwordpasswordpasswordpassword",
        "iv": "password"
    }
}
Run Code Online (Sandbox Code Playgroud)

是否应更新任何部署?

tan*_*101 5

是的,绝对不要使用默认密码或散列键部署您的应用程序.有两种解决方案.

1:秘密文件夹

您可以通过crypto.jsonsecrets文件夹中提供a 来轻松完成此操作.

Config/secrets/crypto.json

{
    "hash": {
        "method": "sha256",
        "key": "<16 characters>"
    },
    "cipher": {
        "method": "aes256",
        "key": "<32 characters>"
    }
}
Run Code Online (Sandbox Code Playgroud)

默认情况下,该Config/secrets文件夹处于.gitignore默认状态,永远不应提交给版本控制.

2:配置中的环境变量

如果难以将Config/secrets/crypto.json文件添加到生产服务器,则可以改为使用环境变量.

Config/production/crypto.json

{
    "hash": {
        "method": "sha256",
        "key": "$HASH_KEY"
    },
    "cipher": {
        "method": "aes256",
        "key": "$CIPHER_KEY"
    }
}
Run Code Online (Sandbox Code Playgroud)

此文件不包含密钥,可以安全地提交到版本控制.

只需确保您正在运行您的应用程序--env=production(您应该已经出于许多其他原因,包括性能)

  • 这些密钥到底是什么用的? (3认同)
  • 它们用于`drop.hash.make()`和`drop.cipher.encrypt()/ decrypt()`.TLS根据连接和配置使用自己的密码. (2认同)