mirror of
https://github.com/ADD-SP/ngx_waf.git
synced 2026-04-26 14:05:52 +03:00
[GH-ISSUE #134] waf_captcha开启后,每次在浏览器刷新首页都需要验证 #102
Labels
No labels
MacOS
Nginx
OpenResty
Tengine
bug
documentation
enhancement
needs-investigation
pull-request
question
stale
stale
stale
timeout
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/ngx_waf#102
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @aidyou on GitHub (Jan 6, 2024).
Original GitHub issue: https://github.com/ADD-SP/ngx_waf/issues/134
下面这个配置,设置后,每次刷新页面(本地开发环境)都会要求CAPTCHA验证,点击后才可以正常访问:
ngx_waf为昨天(2024-01-05)拉取的current分支 源码在nginx:1.25.3-alpine编译,下面是一些环境及版本信息:nginx -V:nginx日志:
@ADD-SP commented on GitHub (Jan 6, 2024):
一般来说短时间内重复验证 CAPTCHA 可能是因为 Cookie 被删除,失效,或无法通过验证。
请检查浏览器是否自动删除了 Cookie,如果在执行验证时 Cookie 依然存在(
waf_captcha_xxxxx),那可能是因为 Cookie 验证失败,最有可能的情况是restart或者reloadNginx,导致用于验证 Cookie 的随机数变化。@aidyou commented on GitHub (Jan 7, 2024):
不是短时间重复。是只要重启 nginx 后进入网站就会导致要验证。如果按您所说的,验证是以 cookie 基础,那么任何一个用户刚进入网站应该不存在
waf_captcha_xxx这个 cookie,这意味着所有人只要是第一次进入一定要验证?如果是这样的话,我觉得那么可能不太符合常规@ADD-SP commented on GitHub (Jan 7, 2024):
@insuns 所有人第一次进入一定要验证肯定是不符合常规,这实际上会破坏浏览体验。
所以实践中,对于非无感 CAPTCHA,通常需要前置条件来触发它。比如如果用户从不常用的城市登录,或正在进行敏感操作则使用 CAPTCHA 来进行人机识别,这需要明确 CAPTCHA 对应的业务,结合风控规则进行,这显然已经超出狭义 WAF 的能力范围。
当然我也做了一些缓解的尝试,比如触发访问频率限制时才调用 CAPTCHA,或者访问了黑名单的路径才调用 CAPTCHA,但这不解决根本问题。
因此,如果本项目的提供的 CAPTCHA 无法满足您的业务场景(糟糕的浏览体验,触发不够智能),那确实需要寻找其他的解决方案。
@aidyou commented on GitHub (Jan 7, 2024):
@ADD-SP 我是暂时关闭了这个验证码,不然确实影响正常体验。你这个项目非常好的,我没有其他的意思,只是询问下我是不是配置问题。不是配置问题我关掉即可。无论如何你这个项目的性能和功能肯定比我自己代码中检测来的强大,对我来说已经足够了。再次感谢!
@ADD-SP commented on GitHub (Jan 7, 2024):
@insuns 我也并没有别的意思,只是讨论一下 CAPTCHA 的典型使用场景。实际上从我的理解来看,要正确的使用 CAPTCHA 需要的不是开发人员的个人决策,这实际上是考验团队间协作能力的任务,前端,后端,风控等部门如何正确交流信息才是最重要的。
如果你没什么问题的话就饿可以 close issue 了。
不过其实过段时间我也会手动关掉的,虽然这个项目目前维护活跃度比较低,但对于已经解决的 issue 我还是会时不时关一下的。
@aidyou commented on GitHub (Jan 7, 2024):
抱歉,忘记了关闭了,哈。
再次感谢!
等你rust版本出来了我研究下,c看着太累了😺