testcookie_get_only
'testcookie_get_only' 指令允许在不设置挑战 cookie 的情况下检索 cookie,主要用于防止自动化机器人请求。
NGINX testcookie robot mitigation module
·
httpserverlocation
语法testcookie_get_only on | off;
默认值off
上下文http, server, location
参数1
说明
在 NGINX testcookie 模块中,'testcookie_get_only' 指令启用一种特定行为,使服务器能够检查是否存在挑战 cookie,而不在同一请求期间尝试设置它。这在希望验证用户是否已经成功通过挑战-响应机制,但不允许再次尝试设置 cookie 的场景中特别有用。它是一种保护措施,旨在减轻不遵守站点所要求的 cookie 或 JavaScript 检查的机器人流量。
启用此指令时,会修改请求处理行为:如果用户在请求时没有挑战 cookie,服务器不会发起另一个挑战,而只是返回挑战未满足的指示。这可防止过多重定向或循环,从而避免令合法用户感到困扰,同时也保护站点免受未经授权的自动化访问尝试。该指令接受单个参数,通常用于指示是否仅检查 cookie 或根据其存在执行其他操作。
此指令用途广泛,可包含在 'http'、'server' 或 'location' 上下文中,允许在 NGINX 配置的不同层级细化 cookie 管理和机器人缓解策略,从而提供在何处以及如何实现的灵活性。务必谨慎放置该指令,以确保其与更广泛的安全和用户体验策略一致。
配置示例
http {
testcookie_get_only on;
location / {
testcookie on;
testcookie_session $remote_addr;
testcookie_max_attempts 3;
testcookie_fallback /fallback;
}
}⚠
确保该指令不要与正常的 cookie 设置流程发生冲突,否则可能会阻止合法用户访问内容。
⚠
在没有适当会话管理的情况下使用该指令可能导致糟糕的用户体验,因为如果用户之前没有设置 cookie,他们可能无法继续。