Estoy creando una aplicación que me gustaría comunicar con mi sitio web. La aplicación tendrá que obtener datos de un usuario de la aplicación en particular de la base de datos del sitio web. No tengo claro cuál es la mejor manera de hacer esto.
He visto una forma de hacer esto, por ejemplo, creando una página de inicio de sesión en la aplicación que luego golpea una lógica login.php en mi sitio web. Esto es conveniente porque puedo usar una base de código para manejar el inicio de sesión tanto para el sitio web como para la aplicación.
Otra solución que he visto es usar solicitudes JSON para manejar la comunicación entre la aplicación y el sitio web. Esto es conveniente porque los objetos JSON son fáciles de crear y analizar.
Básicamente, me gustaría saber la mejor / común forma de hacer que se produzca esta comunicación, cuáles son los pros y los contras de tener uno sobre el otro, y cualquier otro problema de seguridad a considerar.
Por ejemplo, ¿existe el riesgo de exponer datos confidenciales del usuario cuando se usa un método sobre el otro? Si es así, ¿cómo se puede prevenir? ¿Cómo y dónde entra en juego el cifrado y las validaciones de usuario?
fuente
Respuestas:
Recomendaría crear una API REST para su aplicación y su sitio web.
Construir un servicio web es más trabajo, pero creo que es mucho más limpio. Si lo hace de esta manera, ni su sitio web ni su aplicación tienen que preocuparse por cómo conectarse y consultar la base de datos, ya que todos esos detalles serán resumidos por la API. Además, otro beneficio es la seguridad: si su sitio web alguna vez es pirateado, no necesariamente tendrán acceso a su base de datos, ya que el sitio web solo está haciendo llamadas API (y no llamadas a la base de datos). Por supuesto, hay muchas cosas a considerar con seguridad, pero eso es algo menos de lo que debe preocuparse.
Aquí hay una gran guía de inicio sobre cómo crear una API REST en PHP:
http://www.gen-x-design.com/archives/create-a-rest-api-with-php/
fuente
Dependiendo de la complejidad de sus requisitos, los servicios web REST / JSON o SOAP.
Para requisitos simples, REST es más fácil de entender e implementar, especialmente si prefiere JSON sobre XML.
Sin embargo, si sus requisitos incluyen autenticación, verificación de mensajes, descubrimiento, no repudio o esquema de mensaje complejo, puede ser mejor sumergirse en las complejidades de SOAP, ya que casi todos los problemas están cubiertos. Aunque SOAP es más complejo y más difícil de entender, trata con casi todas las permutaciones y variaciones arquitectónicas posibles en un sistema de mensajería, además, tiene un conjunto de herramientas muy maduro e integral para ayudarlo a través del laberinto de API. Pero si no necesita este nivel de sofisticación, quédese con REST.
fuente
La mayor desventaja de una API es que usted tiene la responsabilidad de hacer solicitudes JSON, convertir las respuestas y mostrarlas en la página bajo la responsabilidad del navegador. No todos los navegadores pueden hacer esto, ya sea intrínsecamente o porque los usuarios han desactivado java-script.
Sin embargo, estas preocupaciones han ido disminuyendo con el tiempo y ahora afectan a relativamente pocos clientes. Sin embargo, podría valer la pena hacer un trabajo extra para apoyar a todos los clientes.
Las ventajas de una API son que es mucho más fácil separar la lógica de la API de los detalles de la pantalla y es más fácil acceder directamente a la API por otro medio que no sea un navegador (como desde otra aplicación). Esto automáticamente hace que la prueba de la API sea separada de la prueba del cliente, lo cual es bueno.
También es algo más seguro contra los ataques de inyección de página (como los ataques de secuencias de comandos de sitios cruzados) porque es más fácil analizar y escapar correctamente de JSON que para un documento HTML (que podría incluir etiquetas de script que contengan java-script). Esto supone que en el cliente analiza JSON con un analizador JSON y no solo usa alguna forma de eval (), que no es del todo segura.
Otra posible ventaja es que puede eliminar la capa "marco web". En lugar de ASP, JSP, Django, Zend o lo que sea, realmente solo necesita una capa delgada para retransmitir JSON de un lado a otro de su cliente a su servidor. Entonces, como mínimo, podría transportar esa pieza entre marcos de una manera trivialmente fácil si lo desea. Eso puede eliminar una gran parte móvil de su aplicación.
Creo que el cifrado y la validación funcionan básicamente de la misma manera. Creo que si tiene una API, es más probable que recuerde no confiar en el cliente que si tiene una página web, ya que es posible olvidar que los atacantes no necesitan usar un navegador como cliente, pero pueden enviarle cualquier encabezado. , consultar parámetros y publicar datos que deseen. Sin embargo, esto es más un problema psicológico que técnico, y podría no aplicarse a usted.
fuente