Я сравнительно недавно начал изучать PHP, поэтому прошу отнестись к моим вопросам снисходительно, если они покажутся вам глупыми. Заранее спасибо. Итак, я хочу сделать на своём сайте админку. Для этого хочу использовать глобальный массив $_COOKIE. Логика скрипта будет следующей. 1. На странице будет размещена форма для ввода пароля администратора. Я ввожу пароль, он сверяется с паролем в БД, если пароли совпадают, то создаётся переменная $_COOKIE["Admin"]. Если пароли не совпадают, то меня вновь просят ввести пароль. 2. На этой же странице будет иди проверка на существование переменной $_COOKIE["Admin"]. Если она не существует, то на странице выводится форма для ввода пароля администратора (см. пункт 1). Если переменная существует, то выводятся инструменты администратора. Волнующий меня вопрос: безопасно ли такое решение? То есть никто не сможет искусственно создать в браузере переменную $_COOKIE["Admin"] и тем самым получить доступ к инструментам администратора без ввода пароля?
http://localhost а, если я занесу в переменную $_COOKIE["password"] введённый пароль и буду его каждый сравнивать с паролем из БД и, если пароли совпадают, то буду выводить инструменты администратора, а если нет, то просить ввести пароль. Или работа с $_COOKIE вообще не безопасна? Если да, то какие есть альтернативные варианты?
куки можно и подделать. оптимально - пользователь отправил пару логин/пароль на странице авторизации -- проверили и если все хорошо -- стартовали сессию и отправили ему идентификатор пусть воруют идентификатор сколько угодно - мы же при каждом обращении к защищаемым скриптам будем проверять идентификатор сессии. а уж какая у нас будет проверка - браузер, айпишник и тд и тп - чем больше и мудренее тем лучше работает всё нормуль!)))
Ещё один вопрос: возможно ли теоретичности расшифровать md5(md5($pass))? Я знаю, что есть много онлайн сервисов, которые предоставляют подобные услуга. Или всё это обман?
Во время авторизации берем ключ сессии из $_COOKIE['PHPSESSID'], заносим его в базу данных и соответственно в какой-нить еще один кукиз $_COOKIE['hesh'] например. Ну а дальше проверяем: Код (Text): если $_SESSION['user'] существует { используем данные из этой сессии; } иначе { если $_COOKIE['hesh'] совпадает с хешем из базы данных { заполняем обратно массив сессий данными из БД; } иначе { авторизация; // создаем $_COOKIE['hesh'] } } Добавлено спустя 3 дня 7 часов 14 минут 11 секунд: Ну а в сессии ($_SESSION['access']) можно хранить права доступа. Если на сайте есть администраторы, модераторы и пользователи, можно туда циферку лепить 1, 2 или 3 соответственно. И когда пользователь пытается зайти в админку или что-то отредактировать на самом сайте - проверяется эта циферка. Чтобы не хранить их в кукезах и каждый раз не дергать из базы данных. Так-же в базе данных можно записывать IP пользователя, когда он вводит логин-пароль. И вместе с $_COOKIE['hesh'] проверять этот IP. Тогда если кто-то слямзит кукез - все равно не сможет им пользоваться, если IP не совпадет.
Нормальный вариант, только храните не пароль, а хеш от него, а так же подмешайте туда информацию о IP и браузере. Риск тут - если третьи лица украдут хеш у этого человека и будут знать алгоритм генерации хеша - то перебором смогут найти пароль. Перебором, а в случае заранее известных алгоритмов - по заранее построенным радужным таблицам. По-этому лучше использовать что-то посложнее, например http://www.php.ru/manual/function.crypt.html