set_encrypt_session
The `set_encrypt_session` 指令对给定的变量值进行加密并将其赋值给另一个变量,从而在 NGINX 中实现安全的数据处理。
Encrypt and decrypt NGINX variable values
·
httpserverlocationif in serverif in location
语法set_encrypt_session name $var; or set_encrypt_session name $var timeout;
默认值none
上下文http, server, location, if in server, if in location
参数1-2
说明
set_encrypt_session 指令在 NGINX 中使用 AES-256 加密对变量值进行加密,为诸如用户会话等敏感数据提供额外的安全层。它接受一个或两个参数:第一个参数是将存储加密值的变量名,而第二个参数是包含要加密的原始数据的变量。如果仅提供一个参数,NGINX 会假定原始数据来自预定义来源,通常通过其他指令获得。该机制在需要对 Web 应用中的用户信息进行安全管理的场景中至关重要,尤其是在会话处理流程中配合使用时。
配置后,该指令使用指定的加密密钥和初始化向量 (IV),这些值必须满足长度要求以确保正确运行。用户还可以指定加密会话的有效时长。该指令通常用于处理敏感事务的 location 块中,以确保未加密的数据不会在 NGINX 配置中比必要的时间存在更久。配置错误,例如密钥长度不当或未考虑会话过期,可能会危及安全或导致用户无法访问会话数据。
配置示例
location /encrypt {
set $raw 'text to be encrypted';
set_encrypt_session $session $raw;
add_header Set-Cookie 'my_login=$session';
}⚠
对于 AES-256,请确保加密密钥正好为 32 bytes。
⚠
初始化向量 (IV) 长度不得超过 16 bytes;否则加密会失败。
⚠
如果使用不当,解密后的值可能导致安全风险或未定义的状态。