Диспетчерский подход CGI

Мнения: я хочу запретить прямой вызов определенных скриптов, функциональность которых доступна из меню через Интернет на уровне ОС (Linux).

Я надеялся вызвать сценарий authorize.pl, который проверяет действительность сеанса, проверяет права пользователя и т. д. Затем он перенаправит на целевой сценарий.

Обходит ли это разрешения? Могу ли я ограничить выполнение целевых скриптов из общедоступных, но установить целевые скрипты, доступные для группы, к которой принадлежит authorize.pl? Отражает ли это текущую практику?

SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
SQL Injection: Атаки в реальной жизни и как это вредит бизнесу
Один-единственный вредоносный запрос может нанести ущерб вашему бизнесу. Уязвимости вашего кода могут привести к:
0
0
78
2

Ответы 2

Если вы планируете перенаправить на целевые сценарии, к которым принадлежит группа authorize.pl, не имеет значения, сценарии должны выполняться пользователем веб-сервера.

Почему вы хотите сделать это на уровне ОС? Стандартной практикой является использование простой старой авторизации на основе сеансов, когда проверка выполняется в каждом скрипте.

Вместо вызова authorize.pl и перенаправления на цель создайте модуль с именем Authorization.pm и используйте его в каждом скрипте, вызывая в первую очередь функцию проверки. Эта функция будет перенаправлять на страницу входа (или предпринять другое соответствующее действие), если правильные учетные данные отсутствуют.

Что-то вроде

use Authorize qw{validate}; #Your module
use CGI::Session;
use strict;
use warnings;

my $sess = new CGI::Session();
validate($sess->param('user_token'));

#Unreachable code if session is empty or invalid

#Rest of the code ...

(1) Мы могли бы скомпилировать скрипт авторизации для скорости, (2) мы могли бы блокировать запросы скриптов оптом с функцией базы данных для повышения безопасности. Но я вижу: когда местоположение печатается пользователю при авторизации, браузер запрашивает целевой скрипт.

Stephen 18.12.2008 06:08

Мы думали (1) мы можем предварительно скомпилировать скрипт авторизации для ускорения, (2) мы можем оптом блокировать запросы скриптов с функцией базы данных для повышения безопасности. Но я понимаю, что вы говорите, разрешения должны быть установлены на User Execute, чтобы сценарий взаимодействовал с клиентом: когда перенаправление местоположения печатается для пользователя путем авторизации, браузер клиента запрашивает целевой сценарий.

Весь этот подход пахнет преждевременной оптимизацией как с точки зрения производительности, так и безопасности. Вы можете вызывать функции базы данных из исходного сценария, вы также можете использовать безопасность веб-сервера для блокировки диапазонов IP-адресов или других критериев (стоит обратить внимание на Apache mod_security) и т. д.

Vinko Vrsalovic 18.12.2008 10:34

Другие вопросы по теме