Ok, algunas cosas:
- Es cierto que al trabajar una pagina web por http es igual de inseguro y se estan enviando los datos de claves en plano.
Diantre, no habia caido en eso. Es por eso que es muy comun que la pagina de login y perfil de usuario sea por https y el resto por http. Un punto que debo analizar ahora para mi propia portal!
Por otro lado, desde un punto de vista estricto, es lo mismo pasar una sola clave o un conjunto de parametros de autenticacion o lo que sea. Una vez se lee, se usa la misma clave y ya.
El punto es que clave/id no es un atributo de SEGURIDAD. Es un atributo de AUTENTICACION. Para que sea algo *realmente* seguro debe haber un mecanismo de comunicacion seguro y un mecanismo de autenticacion verificable.
Porque API-key VS Usuario-Contraseña?
- Porque es indespensable que el usuario AUTORIZE el uso del mecanismo automatizado. Por ejemplo, magnolia o yahoo demandan la solicitud del API key, lo que equivale a firmar un documento autorizando el uso de mecanismos robotizados para manipular los comandos.
- Por Usuario/Clave = 1 Sola cadena para efectos practicos. De hecho, una cadena muy larga puede ser mas segura que 2 muy cortas.
Ademas, aunque la clave pase con MD5 igual la *mitad* de la clave ya se sabe, y esta se puede interelacionar con otras cosas. Al igual que muchos, yo siempre uso mamcx en mis registros asi que tengo un sistema 1/2 de seguro que lo que podria ser...
- Otro beneficio algo dudoso es que es mala idea guardar claves y nombres de usuario en texto plano en el codigo fuente, sobre todo en lenguajes como PHP que demandan el despliegue de codigo.
Bueno, como dije, quizas me estoy pasando de neurotico.
- Porque si todos los demas usan API-Key, porque no estar a la moda
Me preocupa eso si lo de MD5 doble. Estas haciendole MD5 asi:
"holamundo".MD5().MD5() ????
Porque si eso es verdad, has minado la seguridad de tu clave y haz reducido la efectividad de la misma. Contrario a lo que uno intuitivamente cree, aplicar multiples encriptaciones a un dato disminuye y no aumenta su seguridad.
Como generar el API-Key? Simplemente un dato autogenerado que sea un poco largo y que carezca de sentido, busca como generar info aleatoria (o puedes reusar por ejemplo la generacion de GUID)