Welcome! Log In Create A New Profile

Advanced

Ограничение доступа по аргументу в query string

San
May 25, 2017 08:20PM
Привет,

Появилась такая задача - если от клиента в query string присутствует
аргумент "controller", nginx должен что-то делать (например разрывать
соединение). Было сделано такое:

if ($arg_controller) {
return 444 ;
}

Работало, нашли как это можно обойти: curl -s -L -D -
http://localhost/testme.php?controller=&controller=heresmysecretkeyword

Nginx не будет делать "return 444" так как аргумент controller пустой
(не определен), второй аргумент с таким же именем nginx игнорирует.
Данные передаются бэкэнду таким способом:

location = /testme.php {
.....
fastcgi_param QUERY_STRING controller=$secret_var&$args;
.....
}

Где $args приобретает форму: controller=&controller=heresmysecretkeyword

Бэкэнд перезаписывает аргумент последним аргументом в query string, и в
код интерпретируемым бэкэндом передается heresmysecretkeyword .

Сталкивался кто-то с такой ситуацией? Как можно это пофиксить если нет
возможности трогать сам бэкэнд. Пока только в голову приходит проверять
регулярным выражением $args на присутствие нежелаемого аргумента. Не
очень хочу юзать тут regex :/

_______________________________________________
nginx-ru mailing list
nginx-ru@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx-ru
Subject Author Posted

Ограничение доступа по аргументу в query string

San May 25, 2017 08:20PM

Re: Ограничение доступа по аргументу в query string

Maxim Dounin May 26, 2017 09:14AM

Re: Ограничение доступа по аргументу в query string

San May 26, 2017 03:04PM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 295
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready