restringir gratis google expired error clave twitter binary api-key secret-key

twitter - gratis - ¿Cómo almacenar una clave API secreta en el binario de una aplicación?



google maps sin api key (4)

No debe usar una clave secreta api en una aplicación que no se ejecute únicamente en su servidor.

Incluso si está perfectamente oculto ... siempre puedes husmear en los datos que pasan por el cable. Y dado que es su dispositivo, incluso podría manipular SSL (hombre en el medio con un certificado creado por una CA personalizada que se agregó a la lista de CA de confianza del dispositivo). O puede conectarse a la biblioteca SSL para interceptar los datos antes de ser encriptados.

Estoy creando un cliente de Twitter para Mac OS X y tengo un secreto de consumidor. Según mi entender, no debería compartir esta clave secreta . El problema es que cuando lo pongo como una cadena literal en mi aplicación y la uso, así:

#define QQTwitterConsumerSecret @"MYSECRETYOUMAYNOTKNOW" [[QQTwitterEngine alloc] initWithConsumerKey:QQTwitterConsumerKey consumerSecret:QQTwitterConsumerSecret];

Está en la sección de datos del binario de mi aplicación. Los hackers pueden leer esto, desmontar la aplicación, etcétera.

¿Hay alguna forma segura de almacenar el secreto del consumidor? ¿Debería encriptarlo?


No hay una verdadera solución perfecta. No importa lo que hagas, alguien dedicado a él podrá robarlo.

Incluso Twitter para iPhone / iPad / Android / mac / etc. tiene una clave secreta, probablemente la hayan ocultado de alguna manera.

Por ejemplo, podría dividirlo en diferentes archivos o cadenas, etc.

Nota: Al usar un editor hexadecimal, puede leer las cadenas ASCII en formato binario, que es la manera más fácil. Al dividirlo en diferentes piezas o usar llamadas a funciones para crear la clave secreta, generalmente funciona para hacer que ese proceso sea más difícil.


Podrías simplemente codificarlo en base64 para ofuscarlo. O, mejor idea, genere la clave en lugar de solo almacenarla, escriba algo como esto:

char key[100]; ++key[0]; ... ; ++key[0]; // increment as many times as necessary to get the ascii code of the first character // ... and so on, you get the idea.

Sin embargo, un hacker realmente bueno lo encontrará sin importar qué; la única forma de protegerlo realmente de los ojos de los demás es usar una función hash segura, pero tampoco podrás recuperarla :)


Una respuesta muy tarde ...

Si configura su propio servidor, puede usarlo para ayudarlo a que su aplicación de escritorio sea autorizada por los usuarios en Twitter sin compartir (es decir, incrustación) su clave secreta.

Puedes usar este enfoque:

Cuando un usuario instala su aplicación de escritorio, debe registrarla en Twitter y en su servidor *) *) La aplicación solicita al servidor que genere la URL de solicitud de token *) El servidor envía la URL generada a la aplicación *) La aplicación dirige al usuario a la URL autorizada *) El usuario autoriza su aplicación en Twitter y pega el PIN generado en ella *) Con el PIN su aplicación toma el token *) Toda comunicación adicional utiliza el token y no involucra a su servidor

Nota: la aplicación inicia sesión en su servidor utilizando las credenciales del usuario (por ej., Id y contraseña) para su servidor.