La autenticación HTTP básica es propensa a los ataques de espionaje y de hombre en el medio. Se recomienda usar HTTPS.
Sin embargo, si no es una opción, siempre puede enviar una cookie al cliente y tener el nombre de usuario/contraseña ingresados allí para evitar que se muestre en el archivo JS. Huelga decir que la contraseña al menos debe ser encriptada/hash por razones de seguridad. Luego, la responsabilidad estará en el lado del servidor para obtener los detalles de autenticación de la cookie.
Ahora, si no tiene ningún control sobre la modificación del código del lado del servidor, prácticamente no tiene más opción que enterrar los detalles de la credencial en un método global ajaxSend()
que enviará los detalles de nombre de usuario/contraseña con cada Solicitud de AJAX Podrías poner esto en otro archivo .js y hacerlo difícil de encontrar, pero estás más o menos restringido a esa forma de seguridad. Aunque, las cookies no hacen su vida más segura. (Sería bueno si la contraseña es hash/encriptada).
La otra cosa que podría hacer es tener una forma de seguridad un poco más complicada: haga que el servidor envíe una copia de seguridad con cada respuesta: el servidor 'firmará' el servidor usando la clave secreta del servidor y podrá Úselo para 'encriptar' el nombre de usuario/contraseña en el lado del cliente para cada solicitud. Su servidor tendría que descifrar constantemente las credenciales. Esto es menos propenso a man-in-the-middle pero aún no es infalible.
HTTPS le ahorraría cada una de las opciones anteriores si es una opción para usted.
Espero que esto ayude.
ACTUALIZACIÓN(según el comentario): La esencia del reparador-dad es la ausencia de estado en el servidor. Es decir, ¡sin sesiones! Por lo tanto, debe enviar las credenciales de usuario con CADA solicitud que el cliente haga del servidor. Si tiene una página de inicio de sesión, entonces es muy difícil estar realmente tranquilo ya que no hay un 'recurso' llamado inicio de sesión. Sin embargo, esto es lo que puede hacer:
- usuario visita la página de inicio de sesión, introduce las credenciales y los clics 'login' solicitud POST
- Enviar al servidor con estas credenciales - probablemente a/Login
- Haga que el servidor devuelve la recurso solicitado para el que se necesitó autenticación Y establecer la cookie con las credenciales válidas para usar en la solicitud 'siguiente'
- Cada solicitud posterior será dirigida al recurso correspondiente en una URL particular con una acción particular (GET, PUT, POST , BORRAR...). El servidor debe verificar los datos de autenticación de la cookie y decidir si el usuario está autenticado y realizar una autorización adicional para otorgar acceso si es necesario.
Cada solicitud deberá identificarse a sí mismo sin tener el servidor de mantenimiento de la sesión - que es el espíritu de la apatridia (y-dad reparador;)
¿No es ese tipo de ruptura la RESTOSIDAD total del servidor? Quiero decir que si vas a ir por esa ruta también puedes hacer el manejo de la sesión en el servidor. No me malinterprete, todavía estoy en la oscuridad sobre si paso credenciales cada vez, almacenarlas en el cliente para aprobar cada vez no es necesariamente la mejor idea. – thenetimp
No hay nada de malo en pasar credenciales en cada solicitud. En REST, cada solicitud debe ser autodescriptiva (para eliminar la necesidad de sesiones en el servidor).Si un recurso está protegido, las credenciales forman parte de la "descripción" de la solicitud y, como tal, deben enviarse con ella. Puede simplemente pedirle sus credenciales al usuario y pasarlas en cada solicitud posterior. Para OP, no use sesiones, por favor. Estás destruyendo la belleza REST con ella. No necesitas sesiones y al no usarlas, mantienes tu sistema mucho más escalable. – miguelcobain
¿Puede proporcionar un ejemplo del código backbone.js que escribió para esta implementación? Estoy teniendo un problema para que funcione. Puedes ver mi progreso en [esta pregunta] (http://stackoverflow.com/questions/14752326/adding-http-basic-authentication-header-to-backbone-js-sync-function-prevents-mo) – MusikPolice