Пользовательские учетные данные для каждой папки - PullRequest
0 голосов
/ 28 июня 2011

У меня есть проект PHP, для которого требуется страница администратора, которая позволит клиенту создать папку, соответствующую номеру задания, и назначить для нее свое имя пользователя / пароль.Затем появится другая страница, которую их клиенты используют для входа в эту папку и загрузки / выгрузки файлов.Какой лучший способ справиться с аутентификацией?Моей первой мыслью было поместить имя пользователя и пароль в текстовый файл внутри папки и запретить серверу обслуживать страницу с помощью .htaccess.Я стараюсь не касаться базы данных для проекта, так как хочу, чтобы она была дешевой и простой.У кого-нибудь есть лучшие предложения о том, как справиться с этим?К вашему сведению, это не приложение с высоким уровнем безопасности.Я сомневаюсь, что клиент даже получит сертификат SSL.

Ответы [ 2 ]

1 голос
/ 29 июня 2011
> What's the best way to handle the
> authentication? My first thought was
> to put the username and password in a
> text file inside the folder and
> prevent the server from serving the
> page using .htaccess. I'm trying to
> avoid touching a database for the
> project as I want to keep it cheap and
> simple.

OpenID - это решение (почти) всех ваших проблем:

  • У вас нет хранилища имени пользователя и пароля => BAD (надежное хранение паролей оченьсложная концепция).
  • Вам не нужно прикасаться к какой-либо базе данных, потому что OpenID обрабатывает аутентификации для вас.
  • openId имеет очень дружественные библиотеки ( LightOpenID очень дружелюбен)и является бесплатным (с открытым исходным кодом).

http://www.codinghorror.com/blog/2008/05/openid-does-the-world-really-need-yet-another-username-and-password.html:

Поскольку мы продолжаем работать над кодом, который в конечном итоге превратится в стек-поток, мы запоздало поняли, чтобудет способствовать переполнению имени пользователя и паролей в Интернете.У меня есть пятьдесят сетевых логинов, и я не могу вспомнить ни одного из них!Добавление этого пятьдесят первого набора учетных данных stackoverflow.com вряд ли поможет делу.

Я думаю, что вы должны использовать opendID (Facebook Connect и т. Д.) Для проверки подлинности.Я даже создал небольшую программу, которая обрабатывает аутентификацию во многом так же, как stackoverflow.com (с красивым виджетом).Вы можете продемонстрировать это на моем простом веб-хостинге по адресу http://westerveld.name/php-openid/.. Вы можете скачать код (использует LightOpenID под обложками) по адресу https://github.com/alfredwesterveld/php-openid.


> I'm trying to avoid touching a
> database for the project as I want to
> keep it cheap and simple.

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

Также база данных помогает вам в кодировании, потому что она абстрагирует все мелкие детали ввода-вывода (использование базы данных облегчает кодирование).К счастью, вам не нужно использовать полностью изогнутую базу данных, такую ​​как MySQL / PostGRESQL, потому что PHP (> = 5) компилирует / устанавливает SQLite для вас, и вы можете просто использовать ее:

SQLite - это программная библиотека, в которой реализован автономный серверный транзакционный механизм баз данных SQL с нулевой конфигурацией.SQLite - это наиболее широко используемый в мире механизм баз данных SQL.Исходный код для SQLite находится в открытом доступе.

Чтобы абстрагировать базу данных от вашего кода, вы должны узнать о PDO для подключения к SQLite.Это введение научит вас, как правильно это делать ( Хорошее чтение! ).

Эти части особенно важны:

  • Connecting
  • Prepared Statements для предотвращения SQL-инъекций.

Тогда, когда вы захотите изменить реализацию с SQLite на MySQL, это будет так же просто, как заменить new PDO на использованиеMySQL вместо SQLite.


> What's the best way to handle the
> authentication?

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


> prevent the server from serving the
> page using .htaccess

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


> I doubt the customer will even spring
> for an SSL certificate.

Кража пароля - это то, что я уверенне нравится вообще.Раньше, когда я не знал о безопасности, я использовал один пароль для всех своих сайтов (запоминать больше сложно). Когда Lifehacker был взломан Мне нужно было изменить хотя бы пароли для важных сайтов, чтобы неполучить взломанСейчас я использую превосходный Lastpass для безопасного хранения своих паролей и создаю уникальный пароль для каждого сайта.Если вы не используете SSL, то кража информации (паролей) может быть такой же простой, как установка blacksheep . Но, к счастью, при использовании OpenID (надлежащие поставщики OpenID, такие как Google, MyOpenID, Yahoo!) большую часть времени аутентификация выполняется по SSL.

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

Вы можете получить сертификаты SSL бесплатно на CAcert.

Кроме того, использование .htaccess + .htpasswd является разумным вариантом здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...