Vapor 的 crypto.json - 部署安全?

Vapor's crypto.json - deployment-safe?

我在 vapor 中看到,crypto.json 作为使用 vapor toolbelt

创建的任何项目的一部分
{
    "hash": {
        "method": "sha256",
        "key": "password"
    },
    "cipher": {
        "method": "chacha20",
        "key": "passwordpasswordpasswordpassword",
        "iv": "password"
    }
}

是否应该为部署更新其中的任何一个?

是的,绝对不要使用默认密码或哈希密钥部署您的应用程序。有两种解决方法。

1:机密文件夹

您可以通过在 secrets 文件夹中提供 crypto.json 来轻松完成此操作。

Config/secrets/crypto.json

{
    "hash": {
        "method": "sha256",
        "key": "<16 characters>"
    },
    "cipher": {
        "method": "aes256",
        "key": "<32 characters>"
    }
}

默认情况下,Config/secrets 文件夹位于 .gitignore 中,永远不应提交给版本控制。

2:配置中的环境变量

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

Config/production/crypto.json

{
    "hash": {
        "method": "sha256",
        "key": "$HASH_KEY"
    },
    "cipher": {
        "method": "aes256",
        "key": "$CIPHER_KEY"
    }
}

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

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