[Sysadmins] Ввод логина-пароля для доступа к сайту неизвестных пользователю
Nikolay A. Fetisov
naf на naf.net.ru
Чт Окт 28 05:38:20 UTC 2010
В Чтв, 28/10/2010 в 05:40 +0300, Dank Bagryantsev пишет:
> ...
> пока никаких толковых наработок я не нашел в этом направлении.
Там наработок-то... В простейшем случае для http:// на nginx'е
конфигурация для сайта вида
server {
listen 80;
server_name .service.tld;
proxy_set_header Host $host;
location /auth {
if ($request_method = POST ) {
proxy_pass http://filter_host;
}
proxy_pass http://service.tld;
}
location / {
proxy_pass http://service.tld;
}
}
И на filter_host выполнять подмену паролей в отправляемых POST'ах.
Например, так:
----------------------
#!/usr/bin/perl -w
use strict;
use HTTP::Proxy;
use HTTP::Proxy::BodyFilter;
my $proxy = HTTP::Proxy->new(port => 80);
$proxy->push_filter(
mime => 'text/html',
request => HTTP::Proxy::BodyFilter->new(
sub {
my ( $self, $dataref, $message, $protocol, $buffer ) = @_;
$$dataref =~ s/fakepassword/realpassword/g;
}
)
);
$proxy->start;
----------------------
(Выдрано из документации к HTTP::Proxy, работоспособность не
проверялась.)
> ... но если доступ к nginx будет все-равно через VPN, то
> можно будет попробовать вариант перебрасывать с http nginx'a на https
> сайтов (где https обязателен), чтобы избежать самоподписанных сертификатов.
Этот вариант сильно хуже - придётся разбирать на прокси-сервере все
ответы и менять https:// на http:// перед отправкой их клиенту. И
наоборот. Причём только в нужных URL.
> Кстати, а вариант с промежуточным http-сервером и открытием сайтов во
> фреймах и внесение-отсылка логинов-паролей через JavaScript, в моем
> случае будет работоспособным?
Зависит от сайтов. На первый взгляд, потребует больше программного кода
на стороне сервера, и передачу на сторону пользователей (и потенциальных
троянов на их машинах) исходных паролей.
--
С уважением,
Николай Фетисов
Подробная информация о списке рассылки Sysadmins