testcookie_session
'testcookie_session' 指令在 NGINX testcookie 模块中配置用于生成挑战的输入,使用客户端 IP 或 IP 与 User-Agent 的组合来进行唯一标识。
NGINX testcookie robot mitigation module
·
httpserverlocation
语法testcookie_session string;
默认值none
上下文http, server, location
参数1
说明
'testcookie_session' 指令是 NGINX testcookie 机器人缓解模块的关键部分,使服务器能够基于用户的 IP 地址或 IP 地址与 User-Agent 字符串的组合创建唯一的挑战。这对于区分自动化机器人和合法用户至关重要。通过设置该指令,系统管理员可以指定服务器如何汇总关于传入请求的识别信息,然后这些信息用于挑战-响应 cookie 的生成。
当定义了 'testcookie_session' 的值后,NGINX 服务器发出的任何挑战 cookie 都将从该输入生成。例如,仅使用远程 IP 地址可能导致同一网络上的多个用户共享相同的挑战,这可能并不理想。相比之下,将远程地址与 User-Agent 结合,即使在共享同一 IP 的用户之间,也能实现更唯一的会话验证。正确的配置可确保挑战机制提供足够的保护,同时尽量减少对合法用户的干扰。
配置示例
http {
testcookie on;
testcookie_session $remote_addr$http_user_agent;
testcookie_name "session_cookie";
}⚠
强制服务器仅使用 remote IP 可能会导致影响位于同一 NAT 后的多个用户的问题。
⚠
确保中间代理不会剥离或更改 User-Agent;否则,该挑战可能无法按预期工作。
⚠
更改会话格式可能需要用户清除 cookies 或在客户端进行其他调整以避免问题。