WackoWiki: YuriMakarov/ПраваДоступа/Actions ...

Home Page | Изменения | Новые Комменты | Пользователи | Каталог | Регистрация | Вход:  Пароль:  

Права доступа к Actions


Зачем это надо
Возможность задания прав доступа к страницам в Ваке является большим ее достоинством (и достаточно редким среди Wiki клонов). Но отсутствие такого же управления доступом к экшенам приводит к появлению дыр в безопасности и прочим неудобствам.


Если попытаться создать закрытый сайт и разрешить просмотр и комментирование отдельных страниц некоторым группам пользователей, то такой пользователь может ввести любой экшен в комментарии, и он выполнится. Например анонимный пользователь может включить в коммент экшен регистрации, стать зарегистрированным пользователем и получить доступ к закрытым для него ранее страницам. Кроме стандартных экшенов Ваки несложно разработать и специализированные экшены под свои нужды, и эти экшены тоже будут беззащитны.


Эту ситуацию легко исправить.


Как это сделать


<?
if (! $this->HasAccess('read''Actions/Files')) return;
  .......


Примеры использования


Обсуждение


Дополнительные идеи




<?
if (! $this->HasAccess('read''Actions/Img')) return;
if (
$HasAccess <> '' && !$this->HasAccess('read'$HasAccess)) return;
  .......



Про форматеры.
Если в вызов форматера добавить параметры (они могут быть и сами по себе полезны), и конкретно параметр HasAccess, то появляется возможность обработки по условию (наличию прав на чтение к примеру). Хорошо бы если в качестве значения HasAccess можно было бы использовать не страницу, а синтаксис из прав доступа к странице. Тогда можно было бы содержание страниц сделать зависимым от того, кто на нее смотрит.


Пример:
Размещаем на странице вызов форматера типа

%%(If HasAccess="$")

далее текст только для зарегистрированных пользователей

%%

или 

%%(If HasAccess="!$")

– только для незарегистрированных, или 

%%(If HasAccess="@Club/Members")

– только для членов клуба.


Сам форматер If должен просто вывести (без изменений) свое содержимое при наличии у пользователя прав.
В общем-то это и для других форматеров не помешало бы, пример –

%%(php HasAccess="@Developers")

Другой вариант жить



 
Файлов нет. [Показать файлы/форму]
Комментариев нет. [Показать комментарии/форму]
Donate
Время работы: 1.895 s
Использовано памяти: 2.714 Mb