Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

Я могу порекомендовать REST in Practice - Архитектура системы Hypermedia в качестве руководства для построения HATEOAS. У него нет образцов PHP, но он содержит полную главу о проблемах веб-безопасности, охватывая HTTP Basic и Digest Auth, OpenID и OAuth и векторы атак, о которых нужно знать.

Ответ 2

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

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

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