2011-12-03 30 views
32

tengo un sitio que permite a los usuarios comprobar sus estadísticas (número de archivo subido, la cantidad de archivos que tienen, cuotas, tipo de acceso, etc ...)API implementación de seguridad php

puedo crear una sección en mi sitio: api.domain.com

esto puede ser el acceso a través rizo o un navegador web desde que estoy devolviendo un objeto JSON o XML (dependiendo de las preferencias del usuario)

Mi pregunta es la siguiente: debería restringir el acceder usando un usuario/pase o debería crear un hash del archivo de usuario?

por ejemplo:

escenario 1:

El usuario crear un rizo php que envía el usuario y pasar a través de correos o el rizo de autenticación y volver a los resultados, analizarlo, etc ...

para mí esto es seguro, pero el usuario tiene que mantener su guión si cambian su pase

escenario 2

El acceso de los usuarios como un archivo: api.domain.com/j355HGssgf3HESAjh45jusf4325GSj5hbsHhdh5HGHFS3732he4548475wbe3447nSNe5XfgjhGJ y luego acceder a los datos

Ésta, nada para mantener

+0

1 muy buena pregunta! –

Respuesta

40

Aquí está mi opinión sobre esto.

Si devuelve una página no encontrada o un mensaje de error (con un buen estado de 200 OK) cuando se realiza una solicitud a su página, puede enviar a bots o personas confiables de ONU una pista sobre lo que pueden obtener y intente una y otra y otra vez ...

Por otro lado, si envía un acceso denegado, como un 401, o mejor un código de error 500 para simular un error del servidor, estos bots o personas confiables de las Naciones Unidas podrían ir lejos para bien.

Diré que el método de usuario/contraseña es un poco más seguro en este caso.

Ahora, ¿confiaría simplemente en ingresar una cadena grande (como en el escenario 2) cuando revise su correo? o la información de su cuenta bancaria?

37

Si fuera yo le daría cada cuenta la posibilidad de crear una clave de API única,

api.domain.com/?key=<API.KEY> 

para más medidas de seguridad que podría hacer que sólo aceptan conexión a través del método de post con la clave de API. Si entra en contacto con los métodos GET y luego mostrar un error etc.

Entonces si cambian su pase/nombre de usuario que no afectará a su API clave

+0

¿Pero qué pasa si alguien le robó su clave de API? Estoy buscando información sobre este argumento porque tengo 2 servidores y quiero comunicarme vía POST con información sensible. Pero no entiendo, puedo usar una API para recuperar la información, pero si alguien olfatea la llamada puede recuperar información sensible con la clave de la API – Kreker

+1

Si se trata de información confidencial, usaría ssl y encriptaría los datos, descifrarlos el otro extremo. Si sabes que una llave de API ha sido robada, vuelve a generar una nueva :) –