Как построить безопасный и RESTful сервис на PHP? - PullRequest
24 голосов
/ 28 апреля 2011

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

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

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

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

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

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

Ответы [ 2 ]

6 голосов
/ 28 апреля 2011

Существует ли учебное пособие, глава книги или статья в блоге, в которой это написано в единственном экземпляре?

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

4 голосов
/ 28 апреля 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).

...