Я хочу запустить некоторый скрипт оболочки для определенного запроса POST и передать некоторые параметры запроса в скрипт.Я могу добиться этого, используя этот скрипт lua в конфигурации nginx:
location /some/path {
content_by_lua '
ngx.req.read_body()
local args, err = ngx.req.get_post_args()
if err == "truncated" or not args then return end
local arg = args["some_arg"]
if arg == nil then return end
function escape(s)
if s:match("[^A-Za-z0-9_/:=-]") then
return "\'"..s:gsub("\'", "\'\\\\\'\'").."\'"
else
return s
end
end
command = "/path/to/script.sh "..escape(arg)
local handle = io.popen(command);
local result = handle:read("*a");
handle:close();
ngx.print(result);
';
}
URL открыт для всех пользователей.Есть ли у этого подхода какие-либо проблемы безопасности, кроме необходимости правильно экранировать аргументы?