¿Cómo puedo asegurar mi servidor para garantizar que las llamadas previas al inicio de sesión se originen en mi aplicación?

1

Tengo un .NET Web Api que da servicio a una aplicación móvil basada en Cordova y un front-end web escrito en AngularJS. He hecho un montón de investigación y la mayoría de las fuentes no dan una gran respuesta o una que es una exageración enorme para mi situación. La seguridad no es una gran preocupación, pero quiero emplear cierta cantidad de seguridad básica para garantizar que solo mi aplicación realice llamadas a mi servidor.

Todos los usuarios deben iniciar sesión a través de Facebook y no tienen sus propias contraseñas para mi aplicación. Mi idea fue que, siempre que se hayan autenticado a través de Facebook y que la solicitud se haya originado en mi aplicación, están listos para funcionar.

La pregunta es, ¿cómo me aseguro de que la solicitud proviene de mi aplicación? Durante el inicio de sesión, emito tokens de portador para que esa parte esté bien, pero ¿qué pasa con las llamadas que no requieren autorización? El principal problema que se nos viene a la mente es enviar comentarios y formularios de encuesta, odiaría a alguien con esos registros. La mejor opción que he encontrado parece ser crear un token cifrado de los parámetros de llamada más un app_secret, y adjuntarlo a la solicitud. Los problemas con eso son, ¿no podría alguien recrear eso? Y como el extremo frontal está en Javascript, pudieron encontrar la app_secret.

1) ¿Cómo puedo asegurar el servidor para garantizar que las llamadas previas al inicio de sesión se originen desde mi aplicación?

    
pregunta Joshua Ohana 04.02.2015 - 05:18
fuente

1 respuesta

5

En general, no puedes. Si desea ejecutar código en la máquina de un usuario, nada en absoluto impide que el usuario haga las mismas cosas manualmente. No puede mantener efectivamente algo secreto de un usuario motivado y simultáneamente ejecutarlo en su computadora; Cualquier secreto en el código de la aplicación es accesible para el usuario. La solución es que no puede confiar en la entrada proporcionada por el usuario; por ejemplo, si las personas críticas no pueden enviar formularios de comentarios con nombres falsos, debe tener un secreto específico del usuario que no esté integrado en la aplicación (para que un usuario no conozca los secretos de otros usuarios, por ejemplo, token de usuario) y úselo para garantizar que las personas sean quienes dicen ser.

    
respondido por el cpast 04.02.2015 - 07:30
fuente

Lea otras preguntas en las etiquetas