ФорумПрограммированиеПыхнуть хотите?F.A.Q. → Безопасность.Часть 5.Основа и логика прав.

Безопасность.Часть 5.Основа и логика прав.

  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 26 сентября 2007 г. 4:58

    В данной теме мы раскроем сущность и логику построения прав,приведем на основе этого фрагменты кодов,которые вы,в зависимости от ваших пожеланий,сможете спокойно поменять.

    Сначало немного философии.
    Разберем что такое права.Интуитивно понятно,что право - это область действий,разрешенных тебе тем,кто этим регулирует.Не будем углублятся в римское право ),а разберем права в приложении,структуру,виды прав.

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

    1.Право на чтение
    2.Право на запись
    3.Право на исполнение



    Рассмотрим небольшое приложение.К примеру имеется скрипт навигации под названием navigate.php который позволяет прочитать,добавить/удалить,изменить правила навигации.
    Осуществить разделение прав мы должны следующим образом

    1)Должен ли иметь модератор доступ к файлу навигации вообще
    2)Если имеет доступ,имеет ли он право на просмотр веток навигации(опять-таки,он может просматривать лишь определенные ветки)
    3)Имеет ли он право вносить изменения в ветки(опять-таки,он может изменять лишь определенные ветки)
    4)Могут ли его изменения сразу вступать в силу,или проходить через админа(опять-таки,могут вступать в изменения лишь определенные ветки)
    Считаем,что каждый из предыдущих уровней прав является подмножеством следующего.(Хоть вышеприведенная система и линейно-зависима,но она бывает очень удобна вследствии того,что здесь четко прослеживается иерархия прав)
    Значит,мы решились с определением наших прав,для нашего мини-приложения они состоят из четырех вышеприведенных пунктов.


    Теперь решим вопрос о том,где и в какой форме хранить права.
    На вопрос где можно ответить довольно однозначно - это БД,хотя вариант является не из лучших(по-моему мнению,лучше хранить их в файлах,хотя особых различий с точки зрения безопасности не наблюдается)
    Теперь решим вопрос о том,в какой же форме хранить права.Но для начала рассмотрим нашу навигация и форму,в которой хранится сама навигация.
    Форма навигации
    Таблица БД.
    id | parent | name | visible | rate |

    id primary key индекс таблицы
    parent родитель какой-либо субветки,если сам родитель,то параметр равен 0
    name имя ветки
    visible видимость ветки
    rate ее уровень в ее области

    На сегодня пожалуй все(я пишу ее онлайн,чтобы быстрее в поисковики попала)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 сентября 2007 г. 6:06, спустя 1 час 8 минут 35 секунд

    rate ее уровень в ее области


    непонял, зачем этот столбец? уровень доступа?
    adw/0
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 26 сентября 2007 г. 6:09, спустя 2 минуты 59 секунд

    нет,к примеру мы имеем несколько навигационных веток a1,a2,a3 у одного родителя A1.Но хотим изменить уровень a3 в области A1.Т.е. изменить порядок следования навигации:a1,a3,a2.Для этого параметр rate у a2 и a3 меняем местами
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 26 сентября 2007 г. 6:26, спустя 16 минут 41 секунду


    нет,к примеру мы имеем несколько навигационных веток a1,a2,a3 у одного родителя A1.Но хотим изменить уровень a3 в области A1.Т.е. изменить порядок следования навигации:a1,a3,a2.Для этого параметр rate у a2 и a3 меняем местами


    дык мона и айдишники поменять…
    adw/0
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 26 сентября 2007 г. 22:15, спустя 15 часов 49 минут 12 секунд

    дык мона и айдишники поменять…

    Очень нехороший способ,очень..
  • Dagdamor

    Сообщения: 47 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 0:45, спустя 2 часа 30 минут 9 секунд

    Нифига не понял из этой статьи…
    Наверное лучше все-таки сначала в оффлайне писать.
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 0:52, спустя 7 минут 10 секунд

    как это относится к безопасности?
    все умрут, а я изумруд
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 0:57, спустя 4 минуты 38 секунд

    Нифига не понял из этой статьи…

    Статья неокончена,если непонятно начала,укажите в чем проблема,постараемся ее устранить


    как это относится к безопасности?

    Ты меня удивляешь)
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 0:58, спустя 51 секунду


    как это относится к безопасности?


    я тоже непонял…
    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 1:01, спустя 3 минуты 3 секунды

    как это относится к безопасности?

    Ты меня удивляешь)

    если перехват прав с большим приоритетом, то это к SQL-инъекциям в твоем случае…
    если это разграничение прав, то статья просто о правах… ничего интересного
    adw/0
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 1:03, спустя 1 минуту 50 секунд



    как это относится к безопасности?


    я тоже непонял…

    Блин,мне казалось,что права пользователей и безопастность проекта неразрывно связаны между собой,вдруг при глюкнутой выдаче прав модер одного подфорума сможет удалить все посты другого?Честно говоря не таких вопросов ожидал…
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 1:06, спустя 3 минуты 36 секунд

    про что ты говоришь это как стандарт де-факто, это просто должно быть.

    если модер может удалить посты другого модера:
    1. это глупость разработчика в проектировании и реализации проекта.
    2. зачем модеру1 удалять посты другого модера2? может просто модера1 накуй послать и выписдить с проекта?
    adw/0
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 1:12, спустя 6 минут 5 секунд


    если модер может удалить посты другого модера:
    1. это глупость разработчика в проектировании и реализации проекта.
    2. зачем модеру1 удалять посты другого модера2? может просто модера1 накуй послать и выписдить с проекта?


    1)SQL-иньекция тоже глупость разработчика
    2)Доступ ограничен)


    Безопасность появилась вследствии безалаберности,безграмотности разработчиков,вследствии которой проекты находятся под угрозой взлома.
    Так что вышеперечисленное никак не отвергает причастия анализа прав к безопасности проекта
  • md5

    Сообщения: 11949 Репутация: N Группа: в ухо

    Spritz 27 сентября 2007 г. 1:13, спустя 16 секунд

    вдруг при глюкнутой выдаче прав модер одного подфорума сможет удалить все посты другого?Честно говоря не таких вопросов ожидал…

    хорошо вопрос другой

    ты не думаешь, что при такой постановке задачи, необходимо разбирать случаи, ПОЧЕМУ произошла та или иная \"глюкнутой выдаче прав\"?
    а не что такое права…

    1.Право на чтение
    2.Право на запись
    3.Право на исполнение

    это похоже на права для действий совершаемых над файлами

    в веб приложении (всякие cms и т.д.) там разделение прав немного другие (у меня допустим: просмотр, добавление, редактирование и удаление)
    короче не понятно зачем..
    все умрут, а я изумруд
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 27 сентября 2007 г. 1:18, спустя 5 минут 1 секунду

    иногда к оказиям приводит и сама неудобная структура.

    в веб приложении (всякие cms и т.д.) там разделение прав немного другие (у меня допустим: просмотр, добавление, редактирование и удаление)

    Просмотр - это чтение
    Редактирование - это запись
    Добавление - execute
    Внимательно читай статью
    Вообще говоря права,которыми могут быть уполномочены модераторы зависят от самого разработчика



    Отдельное сори за столь затяжную статью!В ближайшее время я ее закрою

Пожалуйста, авторизуйтесь, чтобы написать комментарий!