我正在尝试为PoC做些什么,并且是为来自动态后端服务器的网页添加href。使用“subs_filter”添加href很容易,但我需要使用响应中嵌入的信息来构造href。
是否可以使用LUA处理来自proxy_pass的响应,修改它并返回请求者(客户端)?
欢迎任何和所有建议。
以下是我正在查看的代码,现在我更了解Lua以及nginx如何使用它我看到'body_filter'是正确的方法。然而,代码看起来很简单,但我无法使正则表达式工作。
进一步的背景,我正在尝试解析返回的proxy_pass响应,解析它的开始和结束时间,然后构建放在头部的JS脚本URL。
我想要反对的示例响应。
Informações Adicionais
Horário de início: 08H50
Horário de término: 09H14
“location {}”
中的代码body_filter_by_lua '
-- my regex which is validate but doesn't seem to be within LUAJIT
--local from, to, err = ngx.re.find(ngx.arg[1], "(.início: *\d{2}H\d{2})", "jo")
local from, to, err = ngx.re.find(ngx.arg[1], "início", "jo")
replacestr = string.sub(ngx.arg[1], to, 5)
replaceme = "<script></script></head>"
ngx.arg[1] = ngx.re.sub(ngx.arg[1],"</head>", replaceme)
';
将“início”更改为“head”例如有效,所以我假设它是重音字符,但我无法找到确认信息。
将“início”更改为“ \ d {2} H \ d {2}”失败,“body_filter_by_lua:5:无效的转义序列靠近'”'“
答案 0 :(得分:0)
我发现了我在评论中提到的关于&#39; nix.header.content_length&#39;而且重要的是nginx和lua需要双重转义,请参阅:lua-nginx-module special pcre sequences了解更多详情。
重音字符需要旗帜&#39; u&#39;添加到&#39; jo&#39; &#39; ngx.re.find&#39;
答案 1 :(得分:0)
用户“body_filter_by_lua_file”
等同于body_filter_by_lua,除了指定的文件包含Lua代码,或者从v0.5.0rc32版本开始,要执行的Lua / LuaJIT字节码。
当给出类似foo / bar.lua的相对路径时,它们将在启动Nginx服务器时变为相对于由-p PATH命令行选项确定的服务器前缀路径的绝对路径。
该指令最初是在v0.5.0rc32版本中引入的。