PmWikiRu /
Пожалуйста экспериментируйте в песочнице!Администрирование паролей
администраторам (основы)
У PmWiki имеется встроеная поддержка защиты паролем различных областей вики сайта. Пароли могут быть назначены на отдельные страницы, на Вики Группы или весь вики сайт. Обратите внимание, что описаный здесь механизм защиты паролем всего лишь малая часть всей системы безопасности(и в целом вики), более подробное обсуждение смотри на странице Безопасность.
Как описано в разделе Пароли, авторы могут с помощью PmWiki устанавливать пароли как на отдельные страницы, так и на ВикиГруппы. Однако, как описано далее, администраторы вики ко всему прочему могут устанавливать пароли в файлах местной настройки.
Основы
PmWiki поддерживает несколько уровней доступа к страницам вики:
read
пароли позволяют просматривать содержимое страниц вики
edit
пароли управляют редактированием и изменением страниц вики
attr
пароли указывают кто правоспособен устанавливать пароли на страницы (и потенциально другие атрибуты)
upload
пароли управляют закачкой файлов
И наконец, есть ещё пароль admin
позволяющий администратору перекрыть установленые пароли для отдельных страниц или групп.
По умолчанию, PmWiki имеет следующие настройки паролей:
- Пароли
admin
иupload
по умолчанию закрыты; - Группы Main и PmWiki закрыты паролем
attr
(на их собственных страницах GroupAttributes); - Страницы в группе Site, за исключением Site.SideBar, закрыты для редактирования.
Пароль admin
используется для обхода "закрытых" паролей, т.е. не тех, у которых нет пароля на доступ.
Смотри страницу Passwords подробно описывающую установку паролей на страницы и группы. Продолжение этой страницы описывает установку паролей для всего сайта с помощью файла local/config.php.
Установка паролей для всего сайта
Первое, что должен настроить админ -- это пароль всего сайта admin
. Это делается одной строкой в файле local/config.php:
$DefaultPasswords
['admin'] = crypt('secret_password');
Заметьте, что вызов crypt() здесь необходим -- PmWiki внутри хранит и обрабатывает все пароли в виде зашифрованых строк. О подробностях об устранении читаемых паролей из файлов настроек смотри ниже раздел шифрования.
Для настройки редактирования всего сайте только теми, что знает "edit" пароль добавьте строку подобную следующей в local/config.php:
$DefaultPasswords
['edit'] = crypt('edit_password');
Аналогично вы можете установить пароли $DefaultPasswords['read']
, $DefaultPasswords['edit']
и $DefaultPasswords['upload']
для управления чтением, редактированием и закачкой файлов для всего сайта. Пароли по умолчания используются только для страниц или групп не имеющих настроеных паролей. Ко всему прочему, каждое значение $DefaultPasswords
может быть массивом зашифрованых паролей:
$DefaultPasswords
['read'] = array(crypt('alpha'), crypt('beta'));$DefaultPasswords
['edit'] = crypt('beta');
Что говорит, что оба пароля "alpha" или "beta" используются для чтения страниц, но только пароль "beta" позволяет кому-либо редактировать страницу. Впоследстсвии PmWiki запоминает все пароли введёные во время текущей сессии, пароль "beta" позволить и редактировать и менять страницы, когда как "alpha" позволяет только чтение. Личность не введшая какой-либо пароль не сможет просмотреть страницы.
Индивидуальная авторизация (имя/пароль регистрация, AuthUser?)
В отличии от множества систем использующих для доступа к страницам индивидуальную авторизацию (т.е. у каждого пользователя отдельное имя и пароль), PmWiki изначально пользуется системой паролей. В основном защита только паролем часто проще в поддержании, потому что она не требует административной нагрузки для создания учётных записей пользователей, восстановления забытых паролей, управления правами пользователей.
Однако, сценарий PmWiki authuser.php добавляет к системе паролей возможность доступа к страницам по комбинации имени пользователя и пароля. О подробностях по управлению доступа к страницам по идентификации пользователя смотри AuthUser?.
Дыры безопасности ...
Администратору стоит очень внимательно планировать применение паролей во избежание открытия дыр в системе безопасности по невнимательности. Если ваша вики открыта (кто угодно может читать и править), это казалось бы не беспокоит, за исключением случая злобного или запутавшегося пользователя могущего установить пароль чтения на группу и тем самым сделать её недоступной для остальных пользователей. По наикрайнейшей мере, даже открытая вики должна иметь для всего сайта пароли "admin" и "attr" установленые в файле config.php. Распространяемы с PmWiki файл sample-config.php указывает, что группы PmWiki и Main имеют изначально запертый "attr", но если кто-либо создаст новую группу, то "attr" отопрётся. В таком случае администраторам надо помнить об установке пароля "attr" для каждой новой группе (по необходимости). Простейшее решение -- это вставить следующие строки в config.php:
$DefaultPasswords['admin'] = crypt('ваш-admin-пароль'); $DefaultPasswords['attr'] = crypt('ваш-admin-пароль');
Шифрование паролей в config.php
У использования функции crypt() для установки паролей в файле config.php есть один недостаток -- кто-нибудь может просмотреть файл и увидеть незашифрованый пароль. Например, если config.php содержит
$DefaultPasswords
['admin'] = crypt('mysecret');
то пароль "mysecret" явен для других смотрящих. Однако, администратор вики может получить и использовать зашифрованую форму пароля напрямую воспользовавшись ?action=crypt
на любой странице PmWiki (или просто перейти на PasswordsAdmin?action=crypt). Это дейстивие выдаёт форму для генерации зашифрованых версий паролей в пригодном виде для файла config.php. Например, когда ?action=crypt
получит пароль "mysecret
", PmWiki вернёт строку вроде
$DefaultPasswords
['type']='$1$vR4.Ma1.$llNADCnbvJRxIE/hqnucA.';
Строка полученая из ?action=crypt
может быть помещена прямо в config.php, как в:
$DefaultPasswords
['admin']='$1$vR4.Ma1.$llNADCnbvJRxIE/hqnucA.';
Обратите внимание, что в зашифрованой форме ключевое слово crypt и скобки удалены, так как пароль уже зашифрован. Кроме того, зашифрованый пароль дожен быть заключён в одиночные апострофы. В данном примере пароль всё ещё "mysecret
", но кто-либо заглянувший в config.php не сможет его подсмотреть даже увидев его зашифрованую форму. Crypt может дать вам другие шифры для одного и того же пароля -- это нормально (и затрудняет определение исходного пароля).
Снятие пароля
Чтобы полностью удалить с сайта, такой как по умолчанию закрытый пароль для закачек, просто установите в значение пустой строки:
$DefaultPasswords
['upload'] = '';
Также вы можете использовать специальный пароль "nopass"(определяемый переменной $AllowPassword
) через действие ?action=attr
, чтобы получить страницу без защиты паролем в закрытой паролем группе или группу без пароля на закрытом паролем сайте.
Отмена или анулирование паролей
Если пароль скомпрометирован и администратор вики хочет быстро анулировать всех пользователей с таким паролем на сайте, то проще в файле local/config.php добавить следующие строки:
$ForbiddenPasswords = array('secret', 'tanstaafl'); if (in_array(@$_POST['authpw'], $ForbiddenPasswords)) unset($_POST['authpw']);
Это не допускает принятие от кого-либо "secret" и "tanstaafl" как действующиего пароля авторизации, независимо от того пользуются им страницы или нет.
Также смотри
- Массив
$HandleAuth
устанавливающий требуемый уровень авторизации необходимый для выполнения действия(action).
Защита действий (пример)
Каждое действие может быть защищено паролем. Авторы Рецептурника снабжающие сценарии собственными действиями также могут использовать такой приём, но я упростил пример до (по умолчанию) не защищённого ?action=source
. Это действие показывает исходную разметку страницы. Иногда вы не желаете её показывать, особенно при использовании условной разметки, которая не должна открываться легко и быть доступной только тем, у кого есть права на правку.
Для этого есть несколько решений:
- Чтобы разрешить "source" только редакторам добавьте следующиее в ваш local/config.php:
$HandleAuth['source'] ='edit';
- Для использования "source" с собственный паролем добавьте:
$HandleAuth['source'] ='source';
Если вы дополнительно хотите установить пароль в атрибутах страницы, то добавьте:$DefaultPasswords['source'] = crypt(secret);
# смотри выше$PageAttributes['passwdsource'] = "$['Set new source password']";
<< Настройка отдельных групп | Документация | AuthUser? >>
Перевод страницы PmWiki.PasswordsAdmin -
Оригинал перевода PmWikiRu.PasswordsAdmin -
Backlinks
PmWikiRu.PasswordsAdmin: редакция от 2006-04
PmWiki.PasswordsAdmin: редакция от 2019-08