web-dev-qa-db-ja.com

PHPで安全でRESTfulなサービスを構築する方法は?

「クラウド内」のサーバー部分とクライアント部分で構成されるアプリケーションシステムを構築しています。 iPhoneまたはAndroidアプリまたはWebブラウザ。

サーバー側はPHP(LAMP)で実装されており、今日では、getCustomers.php、addNewCustomer.phpなどの各タイプのメソッドリクエストを処理する多数のphpファイルを備えた非常にシンプルなサーバーです。また、これまでセキュリティメカニズムは一切使用されておらず、サーバーをホストしているISPはSSLを提供していません。そうです、SSLはセキュリティのオプションではありません。

今、私は私の古いシステムをギアアップしてそれを作りたいです:
1)真のRESTfulサービス、および
2)セキュリティを追加します。ユーザーは認証および承認される必要がありますが、プレーンテキストのパスワードはもちろん受け入れられません。

私の質問は、上記のポイント1)と2)をどのように達成し、実現するかということです。これを1つのピースにまとめて説明するチュートリアル、本の章、またはブログ記事はありますか?それとも、Web全体に散らばっている情報を収集して、それらを可能な限り組み合わせる必要がありますか?

そして、あなたが答えを知っているなら、そして今私があまり失礼ではないことを願っています、ただoAuth thisまたはopenIDthatと言うのではなく、その方法の明快な説明をいただければ幸いです。これを説明するブログ記事などへのポインタ。言うまでもなく、私はマニアックなようにWebを検索しましたが、驚いたことに、良い答えを見つけることができませんでした!?

よろしく、
スティーブ

24
Steve

これを一枚で説明するチュートリアル、本の章、またはブログ記事はありますか?

REST in Practice-Hypermedia System Architecture を構築のガイドとしてお勧めします [〜#〜] hateoas [〜#〜] システム。 PHPサンプルはありませんが、HTTP基本認証とダイジェスト認証、OpenID、OAuth、および攻撃ベクトルをカバーする、Webセキュリティの問題に関する完全な章が含まれています。に気づいています。

6
Gordon

ソリューションを発明/構築する代わりに、RESTfulサービス用の多くのPHPフレームワークの1つを使用します。 http://www.recessframework.org/ はきれいです包括的ですが、認証を含めるためにほぼ確実に拡張する必要があります。

http://phprestsql.sourceforge.net/ 箱から出して認証をサポートしますが、プレーンテキストのパスワードを暗号化するためにHTTPSに依存しています。認証の処理方法を理解するときに、それを拡張できるはずです。

適切な認証:RESTはHTTP標準を可能な限り使用することを目的としているため、HTTP認証メカニズムを使用することをお勧めします http:// php。 net/manual/en/features.http-auth.php (およびW3Cドキュメント)。

4
Neville Kuyt