2011-07-21 41 views
5

Estoy en el proceso de utilizar facebook javascript sdk para proporcionar la funcionalidad de inicio de sesión de usuario para un sitio web.Facebook Javascript SDK security

Lo que me gustaría hacer es simplemente tomar la identificación de facebook única del usuario registrado y luego poner/traer datos a/desde una base de datos mysql usando la identificación para determinar qué datos están disponibles para dicho usuario.

Sin embargo, realmente no siento que esto sea muy seguro. Mientras no almaceno nada sensible como los detalles de la tarjeta de crédito, etc., obviamente preferiría que fuera lo más seguro posible.

Mi temor es que con javascript sea lo que es, alguien podría falsificar la identificación de Facebook y simplemente sacar lo que quisieran.

Soy consciente de que php sdk proporcionaría una solución sólida a este problema, pero me gusta el javascript uno principalmente porque es fácil de usar y tengo la base para configurarlo (lo admito, estoy perezoso).

Por lo tanto, mis preguntas son:

  1. ¿Sería esta configuración sea tan insegura ya que siento que podría ser?

  2. ¿Hay algo que pueda hacer para mejorar la seguridad de dicho sistema, que no sea cambiar al php sdk?

Gracias!

+0

¿Estaría guardando datos de su facebook o datos relacionados con su sitio? y lo haces a través de SSL? – zachzurn

+0

Me atrevo a usar Javascript para cualquier cosa remotamente relacionada con la validación es inseguro. Recuerda, JavaScript ejecuta el lado del cliente, así que para todos los propósitos un usuario malicioso puede manipular cualquier entrada que recibas y puede evitar selectivamente la validación basada en JavaScript que tienes . – uscere90

+0

Lo único que estaría guardando es el uid del usuario, que se utiliza para identificar la tabla correcta desde la cual agregar/extraer datos y la antigüedad. No hecho usando SSL. – Joshua

Respuesta

4

Los Ids de Facebook son bastante difíciles de compensar (a lo sumo un usuario solo conocerá los suyos). Dependiendo de lo que se almacena en la base de datos (que no va a ser cualquier cosa que el usuario no puede obtener por su cuenta, a menos que pedir permisos ampliados)

Si usted está preocupado acerca de un usuario que intenta obtener información de la base de datos, añadir un token de acceso o una solicitud firmada a cada fila y a nosotros esa identificación de facebook para obtener datos. Eso aumentará en gran medida la seguridad.

EDITAR

Hay pocas ocasiones en las que se obtiene una solicitud firmada por un usuario:

* A signed_request is passed to Apps on Facebook.com when they are loaded into the Facebook environment 
* A signed_request is passed to any app that has registered an Deauthorized Callback in the Developer App whenever a given user removes the app using the App Dashboard 
* A signed_request is passed to apps that use the Registration Plugin whenever a user successfully registers with their app 

peticiones firmadas contendrán un identificador de usuario únicamente si el uso ha aceptado permisos sin embargo, y son no se pasa de nuevo si el usuario ingresa la aplicación y acepta permisos (lo que significa que la solicitud firmada no contendría la ID). Debido a esto, guardar un token de acceso puede ser una mejor idea. Aquí hay más en el signed request

También la solicitud firmada se encuentra en la url (param = "signed_request"). Siempre lo analizo a través de C# pero estoy seguro de que al menos puede obtener uno a través de javascript

+0

Después de leer un poco, lo ideal es que una secuencia encriptada de Facebook contenga el usuario uid, que luego podría leer y usar con la clave secreta de mi aplicación fb. Parece que una solicitud firmada se ajustaría perfectamente a esta descripción, sin embargo, no estoy al tanto de cómo podría llamar a uno de estos a petición? Lo ideal es usar la API de JavaScript. Si alguien sabe si esto es posible, me encantaría saberlo. El token de acceso fb es algo que puedo encontrar a petición, pero el uid no está encriptado, ya que es solo una cadena en el medio. – Joshua

+0

Mire la edición –

+0

La primera afirmación de que las identificaciones de faceboook solo son conocidas por el usuario es incorrecta. Hay muchos sitios en la red que puede usar para buscar la identificación, por lo que no son seguros. Tienes que usar la solicitud firmada. – eagle779

1

Es bastante fácil falsificar el origen usando curl. Me imagino que Facebook tiene otro mecanismo para hacer esto posible. Si inspecciona su código, parece que generan un iframe y pasan las solicitudes. Si tuviera que adivinar, han configurado las solicitudes para que solo se realicen desde el dominio de Facebook, y se aseguran de que el iframe solo se pueda incrustar en una página que tenga un dominio listado en blanco.

Cuestiones relacionadas