Jump to content
  • 0

Вход на сайт


Victor Ananiev
 Share

Question

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

Link to comment
Share on other sites

15 answers to this question

Recommended Posts

  • 0

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

проверка $_SESSION[$usr] на наличие и "непустоту". затем сравнение $_SESSION[$pwd] с значением, которое должно соответствовать этому логину.

затем определяем переменную к примеру $authorized = true если логин не пустой и существует в базе пользователей, а также проверка корректности пароля прошла.

подключаем этот файл через if(!@include_once('auth.inc.php')) {exit($err_AuthInc);}

-- почему именно _once понятно думаю - незачем лишний раз грузить интерпретатор, если в файле случайно окажется пара-тройка включений авторизатора. а include вместо так любимого многими require для критических файлов - в такой комбинации с if и @-подавлением вывода мы аналогично заыершаем работу скрипта, но в отличие от реквайра пишем только необходимые пользователю сведения вместо Fatal error бла-бла-бла.

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

if($authorized) {

// для авторизованных

}

else {

// для остальных

}

дополнительно можно расширить с учетом групп пользователей:

вначале в авторизаторе делаем также определение $group = guest (либо права ставить в числовом виде - так практичнее, у меня irc-шные привычки видимо играют для гостя будет $group = 1 и так далее до высшего сколько угодно). распределение групп пользователей по числовому ключу удобнее, т.к. не придется привязывать дополнительно айди группы для сортировки.

а блок выдачи данных будет уже таким:

if(!$authorized) {

// для неавторизованных

}

elseif($group === 1) {

// для гостей (по идее можно объединить гостя и неавторизованного, но такой вариант разбивки неавторизованный/гость вполне можно использовать при реализации чего-либо типа вики-проекта итд, где возможно анонимное изменение/добавление информации, тогда на видном месте пишется объявление типа "гостевой вход по логину guest с паролем tseug"

}

elseif(...) {

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

}

в общих чертах это так, а подробнее если будут конкретные вопросы хочешь стучись в асю

Link to comment
Share on other sites

  • 0

А такая защита, скорее всего, реализована путем установки прав доступа к файлу на стороне сервера (CHMOD)... Другими словами ? потомучто этому файлу назначен chmod запрещающий доступ извне.. тоесть этот файл может открыть только другой PHP файл на стороне сервера :rolleyes: А при попытке доступа извне (get или post запрос) выдается соответствующее сообщение (403 Forbidden), которое повествует, что доступ к файлу таким образом запрещен... Ну либо вообще никакого сообщения не выдается ;)

О том, что такое CHMOD:

http://chmod.ru/

там же описано, каким образом манипулировать chmod с помощью php

Link to comment
Share on other sites

  • 0

Владелец ? это ты (во время доступа по фтп), тут очевиднее всего будут полные права.. rwx

Группа ? это окружение сервера.. (другие твои пхп-файлы, к примеру, лежащие рядом), обычно тут ставятся права только на чтение и выполнение r-x , но если этот файл должен быть доступен и для чтения и для записи, например из другого скрипта - то естественно будет rwx

Остальные ? это как раз те пользователи от которых ты хочешь файлик убрать. тоесть ставишь там — и никто, кроме самого сервера и тебя (через фтп) не сможет до этих файлов добраться.

Если все-равно не понятно ? гугл тебе поможет :rolleyes:

Link to comment
Share on other sites

  • 0
А пчему через тотал аттрибуты не меняются. Говорит не могу изменить аттрибуты удаленных файлов

Есть такой момент ? при закачке/создании файлов сервер может автоматически выставлять права доступа в зависимости от типа файлов и предустановленых прав учетной записи, либо вы выставили для владельца файла права "только чтение".

в первом случае ? вопрос решается с хостером (служба поддержки).

во втором ? можно попробовать удалить/сменить права на таком файле через web-интерфейс панели управления хостера (есть практически у всех хостеров.. тоесть это некий файловый-менеджер с веб-интерфейсом).

Link to comment
Share on other sites

  • 0

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

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

на "нехороших" хостингах, где не сделано такого, лучше ставить файлам дополнительно атрибут UID

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy