testcookie_secret
testcookie_secret 指令设置一个静态密钥,用于为 NGINX testcookie 机器人缓解模块计算挑战 cookie。
NGINX testcookie robot mitigation module
·
httpserverlocation
语法testcookie_secret string;
默认值none
上下文http, server, location
参数1
说明
testcookie_secret 指令对于建立一种安全的生成挑战 cookie 的机制至关重要,该机制用于区分人工流量和自动化机器人。该指令接受一个参数,该参数是一个字符串,理想情况下应至少 32 字节长以最大化安全性。建议使用更长的密钥,因为它有助于在服务器重启之间保持 cookie 的完整性,确保合法用户不会因为密钥更改导致的 cookie 重置而遭遇会话中断。
当该指令设置为 "random" 时,NGINX 会在每次服务器启动时生成一个新的密钥。尽管这在表面上看似更安全,但不推荐这样做,因为使用旧密钥生成的所有挑战 cookie 都会失效,导致合法用户在服务器重启后因 cookie 无法使用而出现访问问题。因此,建议使用一致的静态密钥,以在保护免受自动化请求的同时为用户提供稳定的体验。
testcookie_secret 指令应在 NGINX 配置文件中的 http、server 或 location 上下文中进行适当配置,以便根据所需的应用范围指定不同的配置。正确管理此参数有助于显著提升 testcookie 模块所采用的挑战/响应机制的效果。
配置示例
http {
testcookie_secret "my_static_secret_12345678901234567890123456789012";
}⚠
使用 "random" 作为密钥会在服务器重启时使所有现有的 Cookie 失效,从而影响合法用户。
⚠
确保密钥至少为 32 字节,以维持足够的安全性。
⚠
未指定密钥可能导致 Cookie 生成失败,从而使该缓解措施失效。