Как создать безопасный сервис RESTful на PHP?

Я создаю прикладную систему, состоящую из серверной части «в облаке» и клиентской части, например. приложение для iPhone или Android или веб-браузер.

Серверная часть реализована на PHP (LAMP) и сегодня представляет собой очень простой сервер с несколькими php-файлами, обслуживающими каждый тип запроса метода, например: getCustomers.php, addNewCustomer.php и так далее. Кроме того, до сих пор не использовался какой-либо механизм безопасности, и провайдер, у которого размещен сервер, не предоставляет SSL. Правильно, SSL не вариант для обеспечения безопасности.

Теперь я хочу улучшить свою старую систему и сделать ее:
1) Настоящая служба RESTful и
2) Добавить безопасность, пользователи должны быть аутентифицированы и авторизованы, но пароли в виде простого текста, конечно, неприемлемы.

Мой вопрос просто в том, как мне достичь и реализовать пункты 1) и 2) выше? Есть ли какой-нибудь учебник, глава книги или статья в блоге, описывающая это в единой части? Или мне нужно собрать информацию, разбросанную по всему Интернету, а затем попытаться объединить ее наилучшим образом?

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

С уважением,
Стив


person Steve    schedule 28.04.2011    source источник
comment
Тоже не хочу показаться грубым, но судя по тому, что вы написали - вы на правильном пути. Вы упомянули OAuth/OpenID — почему бы не использовать это для аутентификации? Другим способом может быть реализация вашей собственной версии аутентификации. Что касается создания настоящего спокойного сервиса, я могу ошибаться, но вы взглянули на: ajaxpatterns.org/RESTful_Service   -  person Michael J.V.    schedule 28.04.2011


Ответы (2)


Есть ли учебник, глава книги или статья в блоге, описывающая это в одном фрагменте?

Я могу порекомендовать REST на практике — архитектура гипермедиасистемы как руководство по созданию систем HATEOAS. В нем нет примеров PHP, но он включает полную главу о проблемах веб-безопасности, охватывающую базовую и дайджест-аутентификацию HTTP, OpenID и OAuth, а также векторы атак, о которых следует знать.

person Gordon    schedule 28.04.2011

Вместо того, чтобы изобретать/создавать ваше решение, я бы использовал одну из многих сред PHP для служб RESTful. http://www.recessframework.org/ довольно всеобъемлющий, хотя вам почти наверняка придется расширить его до включить аутентификацию.

http://phprestsql.sourceforge.net/ поддерживает аутентификацию по умолчанию, но использует HTTPS для шифрования. пароли в открытом виде; вы сможете расширить его, когда разберетесь, как работать с аутентификацией.

Что касается аутентификации: поскольку REST предназначен для максимально возможного использования стандартов HTTP, я бы рекомендовал использовать механизмы аутентификации HTTP, подробно описанные в http://php.net/manual/en/features.http-auth.php (а также в документации W3C).

person Neville Kuyt    schedule 28.04.2011