Требуется помощь системы входа в PHP - PullRequest
0 голосов
/ 15 июня 2011

Я новичок в PHP, и у меня нет большого опыта в PHP. Я пытаюсь разработать систему входа в систему на основе многоуровневой структуры. Я думал о различных методах реализации этой системы, но я думаю, что лучше получить некоторыеИдеи от опытных программистов, таких как вы. Я объяснил идею моего требования ниже.

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

Должен ли я использовать разные функциональные файлы для разных пользователей или использовать один и тот же набор файлов с разными привилегиями.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 15 июня 2011

В общих чертах, сначала нужно определить роль пользователя при входе в систему. Обычно это делается путем поиска пользователя в базе данных.

Затем спрячьте их роль в сеансе: сеансы php

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

Кроме того, все это должно быть сделано через SSL-соединения (HTTPS), чтобы помочь злоумышленнику захватить сеанс другого пользователя путем проверки заголовков запросов администратора и создания собственного запроса с использованием этого идентификатора сеанса.

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

1 голос
/ 15 июня 2011
class level
{
    const UNCLASSIFIED = 1;
    const CONTROLLED = 2;
    const RESTRICTED = 4;
    const SENSITIVE = 8;
    const CONFIDENTIAL = 16;
    const SECRET = 32;
    const TOPSECRET = 64;
    const CODEWORD = 128;

    const MEMBER = 63; // Everything up to SECRET.
    const STAFF = 127; // Everything up to TOPSECRET.
    const ADMIN = 255; // Everything.

    private $level = NULL;

    public function __get($property) { return $this->$property; }
    public function __set($property, $value) { return $this->$property = $value; }
}

Используя побитовые операции, вы можете установить предопределенные уровни для некоторых людей, где их ситуация доступа является распространенной. В то время как у вас есть кто-то, кому нужен доступ к одному типу информации, но не к другому, вы можете настроить его учетную запись только с тем уровнем доступа, который им нужен.

1 голос
/ 15 июня 2011

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

...