NGINX Lua 基础 HTTP 授权/认证 允许一定数量的尝试次数
2016-2-21 19:43:28
收藏:0
阅读:77
评论:2
我正在尝试使用我在这个 Git 存储库中找到的 Lua 脚本:https://github.com/knq/nginx-crowd-lua/blob/master/crowd-auth.lua 对 Atlassian Crowd 用户管理系统的用户进行授权,以访问受限内容。
使用原始脚本时发生的情况是,如果用户输入错误的用户名/密码,则浏览器返回 403 Forbidden 响应,不允许用户再次尝试,除非用户关闭浏览器并返回页面。
我正在尝试允许 3 次尝试登录后显示 403 页面。
我已尝试循环此脚本,但是循环不起作用,一个错误的用户/密码会直接在第一次尝试时跳转到 403 页面,或者循环是无限的,允许无限次尝试。
请有人能提供建议吗? 如果您需要更多详细信息,请评论并我将提供。
谢谢
点赞
用户2060502
使用 Fail2Ban。 以下是一个使用方法示例: https://www.digitalocean.com/community/tutorials/how-to-protect-an-nginx-server-with-fail2ban-on-ubuntu-14-04
上述解决方案无法保护免受 DDoS 攻击。
2016-02-23 16:21:10
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
我已经找到解决方法。对于那些也对此感兴趣的人,我已经发布了解决方案:
ngx.header['WWW-Authenticate']命令停止脚本并发送一个新请求。无论在 NGINX 还是 Lua 中的任何类型的变量都无法跨请求保持它的值。您可以做的事情是设置一个保存最大身份验证尝试次数的 cookie,如下所示:local auth_tries = ngx.var.cookie_AuthAttempts if not auth_tries then auth_tries = 1 end if type(auth_tries) == "string" then auth_tries = tonumber(auth_tries) end然后在循环结束时设置计数器,并将 cookie 设置为其值:
auth_header = nil auth_tries = auth_tries + 1 ngx.header['Set-Cookie'] = "AuthAttempts="..auth_tries.."; Path=/; Expires="..ngx.cookie_time(ngx.time() + 3600*24)然后,如果已达到最大失败尝试次数,请清除数据并发送 401 响应:
ngx.header['Set-Cookie'] = "AuthAttempts=0; Path=/; Expires="..ngx.cookie_time(ngx.time() + 3600*24) if res ~= nil then if res.status ~= 200 then ngx.exit(ngx.HTTP_FORBIDDEN) end else ngx.exit(ngx.HTTP_FORBIDDEN) end