Pregunta

Para un proyecto personal, desarrollo una aplicación de escritorio que requiere claves de la API de varios servicios web diferentes.

he estado pasando y la preparación de esta solicitud para convertirse de código abierto y correr por el problema de qué hacer con esas llaves.

El problema es el siguiente: Mi opinión es que estas claves de la API no deben ser visibles para cualquier persona que utilice la aplicación o visualizar / modificar el código fuente. Desde finales del servicio web, estas claves de la API se utilizan para identificar aplicaciones que acceden a su API, y permitir / bloquear el uso según corresponda. En la mayor parte de las condiciones de servicio de estas teclas para recibir en realidad es declarado explícitamente que las llaves no se deben compartir con el mundo.

En la actualidad todas las llaves están codificadas, pero por lo que estoy en un punto muerto en cuanto a cómo manejar la situación de las claves privadas en una aplicación de código abierto:

-Si las claves de permanecer codificados, que será visible para el público en cuanto mi código fuente es.

-I realmente no se puede omitir el archivo fuente con las llaves de la distribución de código, desde entonces que no se compilará. Esto resuelve el problema técnico, pero introduce un nuevo e inaceptable uno.

-Si empujo las llaves fuera a un archivo de configuración .ini o de otro tipo, y simplemente no incluir ese archivo en mi repositorio de código público, todavía tendría que ser distribuido con el binario de mi solicitud para que la aplicación de la función, por lo que las llaves serían visibles en la distribución de la aplicación en lugar de la distribución de código fuente. No es una mejora. Cualquier gimnasia de cifrado que intentaron utilizar en este archivo INI sería la adición de la complejidad para cualquier persona intentar modificar mi código.

Así que, con respecto a mi base de código (actualmente en Mercurial para el control de versiones), ¿cuál es la mejor manera de manejar todo para que el código puede ser pública, pero las llaves se quedan privado?

¿Fue útil?

Solución

No sé qué idioma que está utilizando, pero por ejemplo en C / C ++ deberá añadir un archivo de inclusión con las claves de la API, y luego dejarlo fuera del control de origen, en lugar de añadir un archivo falso con explícitamente falsos claves de la API. La mayoría de las lenguas tienen una u otra manera de incluir archivos.

Otros consejos

Su aplicación debe utilizar un archivo de configuración. Este archivo de configuración se carga en tiempo de ejecución y no debe afectar la compilación. El permite a los usuarios descargar un archivo binario y seguir utilizando su propia clave de API.

Como Kornel dice, que puede incluir un ejemplo de archivo de configuración con un API falsa llave, en su control de código fuente.

Otra opción, que podría hablar con la gente que maneja los servicios web y pedir una de dos cosas.

  1. Una clave temporal, que sólo funciona para una funcionalidad limitada. Eso permitirá a los usuarios ver la funcionalidad básica de su aplicación, pero algunas personas nunca habría actualizar la llave y sólo tiene que utilizar el material básico.

  2. Hablar con los servicios web para ver si se le dará una clave de API especial para su aplicación. La versión de código abierto requeriría que los usuarios introduzcan su propia cuenta. Pero su binario podría utilizar una normal.

La idea de utilizar una configuración de clave de API, no es nueva o desconocida. servicios de bit.ly lo hacen. Y todas las aplicaciones de código abierto que veo que proporcionan el uso con Bit.ly preguntará su nombre de usuario y clave de API antes de poder utilizarlo.

Esto no es diferente?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top