Диспетчерский подход CGI - PullRequest
0 голосов
/ 18 декабря 2008

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

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

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

Ответы [ 2 ]

0 голосов
/ 18 декабря 2008

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

0 голосов
/ 18 декабря 2008

Если вы планируете перенаправить на целевые сценарии, к которым относится группа 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 ...
...