Forum Webscript.Ru
Наши скрипты => Sanitarium WebLoG => Модификации => Тема начата: Green Kakadu от 24 Февраля 2002, 02:30:43
-
Уже можно скачать мод для паролирования Sanitarium WebLoG.
Проверялся он под IE с включеными cookies (это намек на то, что в NN, Mozilla, Opera он не проверялся) :)
куки надо включить обязательно (через них передается ID и время сессии).
МОД запускается оч. легко.
Скачать можно тут (ээ еще в уголке Sanitarium не оформили соотв. образом, поэтому пока линк только на форуме):
http://webscript.ru/sanitarium/auth.zip ;)
А вот readme (оно есть в комплектации к моду в auth.zip, ну не все же качать будут)
===============================
***AUTH-MOD***
----------------------------------------------------
Auth-mod - система безопасности Sanitarium WebloG
Автор: Green Kakadu (gnezdo@webscript.ru)
Форум/Тех.Поддержка: http://forums.webscript.ru
Copyright 2002 WebScript.Ru Network ( http://webscript.ru )
------------------------------------------------------
Описание: Данный мод (auth-mod) обеспечивает некоторую иллюзию безопасности
для тех, у кого нет воз-ти использовать .htaccess для паролирования доступа к
системе веб-публикаций Sanitarium WebLoG (http://webscript.ru/sanitarium).
Скачать данный мод (и саму систему публикаций) можно отсюда:
http://webscript.ru/sanitarium
Инструкция по установке:
-------------------------------------------------------
Паролировать нужно три файла: com_admin.cgi, admin.cgi и upload.cgi
Все нижеописанное - это повторяющиеся однотипные (почти) замены для каждого из этих файлов.
Принцип таков:
- подключаем библиотеку auth.pl (require "auth.pl")
- прописываем в начале "созидательной" части скрипта строки,
заставляющие его проверять личность админа и только после этого выполнять.
Не пугайтесь (по началу кажется, что править много и это несколько угнетает),
все на самом деле быстро и легко делается. Приступим.
1 Редактируем файл admin.cgi
-------------------------------------------------------
1.1 После строк (в начале файла):
require "cfg.cfg";
require "Sanitarium_WL.pm";
require "lang.pl";#это строка ~36
вставить строку:
require "auth.pl";
1.2. В том же файле (admin.cgi) После:
sub main {
#--------------------------------------------------------------
$script_admin||=$ENV{\'SCRIPT_NAME\'};
if ($ENV{\'REQUEST_METHOD\'}){%in=&parse_form;}
добавить строки:
if ($in{\'login\'}){&check_login($in{\'pass\'});}
else {&check_user;}
ИСПРАВЛЕНО!
2 Редактируем com_admin.cgi
--------------------------------------------------------------
2.1. После строк:
require "Sanitarium_WL.pm";
require "Comment_WL.pm";
require "lang.pl";
require "cfg.cfg";# это строка ~22
добавляем строчку:
require "auth.pl";
2.2. В самом начале sub main, находим строку:
if ($ENV{\'REQUEST_METHOD\'}){%in=&parse_form;}
после нее добавляем:
if ($in{\'login\'}){&check_login($in{\'pass\'});}
else {&check_user;}
ИСПРАВЛЕНО!
3. Редактируем upload.cgi
---------------------------------------------------------------
3.1 Находим в начале файла строки (20-21):
require "cfg.cfg";
require "lang.pl";
Меняем их на:
require "cfg.cfg";
require "lang.pl";
require "auth.pl";
3.2 Находим строки:
sub main {
#-------------------------------------------------------------------
$obj = new CGI;
После этого помещаем это:
if ($obj->param(\'login\')){&check_login($obj->param(\'pass\'));}
else {&check_user;}
3.3. По желанию. Можно поставить лимит на максимальный размер загружаемых файлов (в байтах),
переменная $size_limit=0;
Например:
my $size_limit=100*1024;#100кб
my $size_limit=50*1024;#50 кб
В целом, имеет смысл поставить это ограничение - на всякий случай..
----------------------------------------------------------------
4. Настраиваем auth.pl
Находим строку (15-я строка):
my $password=\'GKydljZ1x/Jv.\';
и вписываем вместо GKydljZ1x/Jv. (это соответствует паролю admin) свой ЗАШИФРОВАННЫЙ пароль.
Как и где шифровать?
Есть два варианта:
1 Заходите сюда: http://webscript.ru/cgi-bin/sanitarium/password.cgi
вводите свое слово, потом списываете пароль
2 Или генерируете это сами, для этого надо всего лишь запустить скрипт:
#!/usr/bin/perl
print "Content-type: text/html\\n\\n";
print crypt(\'ваше слово-пароль из английских букв/цифр\', \'GK\');
Все. auth.pl кидаете в ту же папку, где лежит admin.cgi. Устанавливаете права 666 или 660
должно работать.
=================================================================
Советы, Рекомендации
=================================================================
1. Если есть возможность поставить пароль на всю папку, используя .htaccess, то, не задумываясь
ставьте, auth-mod предоставляет намного худший вариант защиты,
чем отработанная серверная технология с использованием .htaccess
Кроме того, auth-mod вносит дополнительную нагрузку на сервер (и увеличивает время выполнения скрипта),
так как при каждом вашем тычке, скрипт вместо того, чтоб выполнять то, что от него требуется,
будет пытаться идентифицировать вас:
посмотрит cookies, проверит время, проверит ID сессии, обновит время, сгенерирует новый ID
сесии, сохранит это, пошлет cookies вам, и лишь после этого :)
будет делать то, что вы от него хотите.
--
2. Пароль обратно не расшифровывается :) Поэтому, если забудете, то придется вам сгенерировать
и вписать в auth.pl новый пароль.
--
3. Ваш броузер должен принимать cookies
--
4. Время одной сессии 2 часа (по умолчанию). Т.е. если вы вошли,два часа
ничего в Админ.Центре не делаете, то потом, когда вдруг всполошитесь и начнете делать,
придется входить по новой.
Данный лимит времени (время ожидания) можно уменьшить/увеличить, если вас не устраивают 2 часа.
Делается так:
строка 23: $time_limit= 2*3600;
меняем на свое значение, например 3*3600 - 3 часа (в секундах)
Увеличивать время ожидания не рекомендуется.
--
5. В АдминЦентре может находиться ТОЛЬКО 1 человек. Такая вот система безопасности :)
Вдвоем там работать невозможно, даже если у вас один пароль (а он и будет один) ;)
--
6. Если кто-то найдет серьезные огрехи и дыры в данной системе безопасности,
сообщите пожалуйста об этом: gnezdo@webscript.ru
--
7. Со всеми вопросами, пожеланиями, предложениями идете на.. наш форум:
http://forums.webscript.ru
--
Администрация WebScript.Ru Network
-
а у меня не работает! я ввожу пароль и попадаю на форму, спрашивающую пароль. Незнаю... у меня не стоит Update2.
-
я ввожу пароль и попадаю на форму, спрашивающую пароль.
1. правильно ли прописан зашифрованный пароль в auth.pl (рекомендую сначала поставить все по умолчанию, т.е. не менять там пароль - для логина вводите admin)
2. куки включены?
3. что за хостинг?
:) у меня работает исправно.
-
Меня тоже не пускает. Даже когда оставляю пароль по умолчанию.
-
похоже, пускает только меня - посмотрю с чего это
-
Ошибка вышла при написании readme. В файлах admin.cgi и com_admin.cgi
необходимо вставлять эти две строчки (вместо тех двух, о которых было написано ранее):
if ($in{\'login\'}){&check_login($in{\'pass\'});}
else {&check_user;}
все остальное то же.
Описание исправил. Дистрибутив с испрваленным readme закачан.
:) у меня такое бывает..
-
Ничего не понял... все равно не работает!
-
у меня тоже.... хотя мод скачал тока сегодня....
-
у меня тоже.... хотя мод скачал тока сегодня....
а ф-ция crypt у вас на сервере нормально работает (напнример на hut.ru нет)
#!/usr/bin/perl
print "Content-Type: text/html\\n\\n";
print \'\';
print crypt(\'admin\', \'GK\');
print \'
\';
результат: GKydljZ1x/Jv.
т.е. как я понимаю, дальше окна с логином вас не пускает?
При этом включены куки, и используется IE?
-
Я пароль получал на webscipt.ru.
#!/usr/bin/perl
print "Content-Type: text/html\\n\\n";
print \'\';
print crypt(\'admin\', \'GK\');
print \'
\';
У меня выдает $1$GK$p1yt9R0lVUJ7lHDrL5V.p.
-
Paranoix
Сгенерируй пароль сам, на своем сервере.
У тебя по другому работает crypt, чем на webscript вот и не работает.
-
У тебя по другому работает crypt, чем на webscript вот и не работает
лучше сказать так - он у него не работает. На любой платформе (Win, Unix) должен быть один и тот же результат.
алгоритм шифрования один.
хотя можно и попробовать прописать тот, что сгенерится на этом нестандартном сервере.
тот скрипт - и есть генерилка паролей
-
т.е. как я понимаю, дальше окна с логином вас не пускает?
При этом включены куки, и используется IE?
Угу. Ослик 6...
-
т.е. как я понимаю, дальше окна с логином вас не пускает?
При этом включены куки, и используется IE?
Угу. Ослик 6...
А crypt нормально шифрует? Если нет, то пароль надо сгенерить на своем сервере (скрипт написан выше)
-
Не понимаю почему, но ничего не палучается. Я всё сделал по инструксии но ... http://qartulicom.virtualave.net/cgi-bin/newsi/admin/admin.cgi здес парол: "admin"
Пажалуста помагите
-
Попробуйте то же что и тут:
http://forums.webscript.ru/showthread.php?s=&postid=24539#post24539
может у них этого тоже нет
-
Green Kakadu
по-моему, замороченный какой-то у тебя способ.
имхо, проще в сам скрипт вставить:
sub pw {
if ($pass ne $log_config{pass}) {
print header(
-charset => "$Charset",
-type => "text/html",);
&SetPageElements("Access denied. You\'ve entered wrong password");
} else {
&cp
}
exit;
}
#кусок кода одного моего проекта...
при этом пасс лежит в самом скрипте, и там же правится. и вообще,
сервера ведь не дураки настраивают.
поэтому если будет файло pass.cgi, к примеру, и чмод 600, то никто его никогда и не увидит, даже если чмод будет 755, его все равно никто не увидит.
а излишняя паранойя лишь все усложняет. в конце концов, можно куки перехватить - раз. можно .pwl стащить - 2. (и что там есть .хтаксесс, что его нет. все равно многие ставят галку "запомнить пароль". а что такое виндовский пвл и как быстро он ломается ты знаешь не хуже меня, я думаю.
-
ЗЫ.
%log_config - хэш, где все это дело записано.
&SetPageElements - sr, отвечающий за вывод сообщений об эррорах, да вообще всех сообщений.
&cp - контрольная панель собсно:)
-
Для тех, кто еще с этим столкнется...
У меня была та же проблема :)
суть ее в том, что после ввода пароля, надо не на клаве ентер нажимать, а мышью по кнопке кликать :) или таб-ентер... в общем фокус надо обязательно кнопке «LogIn!» передать... ИМХО конечно :)
-
Error: [Wed Mar 12 13:26:09 2003] admin.cgi: Can not open GKNtWe8Imu13U, reason: Permission denied at auth.pl line 174.
Вот, что он мне выдает на впечатывание пароля.