2011-04-28 17 views
23

Estoy construyendo un sistema de aplicación que consiste en una parte del servidor "en la nube" y una parte del cliente, p. una aplicación de iPhone o Android o un navegador web.¿Cómo construir un servicio seguro y RESTful en PHP?

El lado del servidor está implementado en PHP (LAMP) y es hoy un servidor muy simple con una cantidad de archivos php que sirven para cada tipo de solicitud de método como: getCustomers.php, addNewCustomer.php y más. Además, hasta ahora, ningún mecanismo de seguridad se ha utilizado en absoluto y el ISP que aloja el servidor no proporciona SSL. Así es, SSL no es una opción para la seguridad.

Ahora, yo quiero que prepararse mi viejo sistema y hacerlo:
1) servicio REST Verdadero, y
2) Añadir la seguridad, los usuarios deben ser autenticados y autorizados, pero las contraseñas en texto plano es, por supuesto, no aceptable.

Mi pregunta simplemente es, ¿cómo logro y me doy cuenta del punto 1) y 2) anterior? ¿Hay algún tutorial, capítulo de libro o artículo de blog que describa esto combinado en una sola pieza? ¿O necesito recopilar información rociada en toda la web y luego intentar combinarlos lo mejor que pueda?

Y, por favor, si conoce la respuesta, y ahora espero no ser tan grosero, no me limite a decir esto o aID, sino que agradecería una explicación lúcida de cómo o indicadores para, por ejemplo, artículos de blog explicando esto. No hace falta decir que he buscado en la web como un maníaco pero, para mi gran sorpresa, ¡no he podido encontrar una buena respuesta !?

Saludos,
Steve

+1

No quiero sonar grosero tampoco, pero por lo que escribió, está en el camino correcto. Usted mencionó OAuth/OpenID: ¿por qué no usar eso para la autenticación? Otra forma puede ser implementar su propia versión de autenticación. En cuanto a la creación de un verdadero servicio de descanso, podría estar equivocado, pero has echado un vistazo a: http://ajaxpatterns.org/RESTful_Service –

Respuesta

5

¿Hay un tutorial, capítulo del libro o artículo de blog que describe este comined en una pieza de la chamusquina?

Puedo recomendar REST in Practice - Hypermedia System Architecture como guía para la construcción de sistemas HATEOAS. No tiene ejemplos de PHP, pero incluye un capítulo completo sobre Problemas de Seguridad Web, que abarca HTTP Basic y Digest Auth, OpenID y OAuth y vectores de ataque para tener en cuenta.

3

En lugar de inventar/construir su solución, utilizaría uno de los muchos frameworks de PHP para servicios RESTful. http://www.recessframework.org/ es bastante completo, aunque seguramente tendrá que extenderlo para incluir autenticación.

http://phprestsql.sourceforge.net/ es compatible con la autenticación de fábrica, pero se basa en HTTPS para cifrar contraseñas de texto simple; deberías poder extenderlo cuando encuentres cómo tratar con la autenticación.

Autenticación a propósito: como REST está destinado a usar los estándares HTTP tanto como sea posible, recomiendo usar los mecanismos de autenticación HTTP - descritos detalladamente en http://php.net/manual/en/features.http-auth.php (así como en los documentos W3C).

Cuestiones relacionadas