Estoy trabajando en una aplicación javascript de código abierto. Estoy tratando de interactuar con una API de terceros (github específicamente). Intento mantener toda mi aplicación solo en el lado del cliente, así que realmente no tendré un servidor en el que recurrir o almacenar archivos ocultos. Como parte del proceso de OAuth, debo proporcionar la clave secreta provista para mi clave de API. No se supone que publique o comparta esta clave.Ocultar clave secreta en el repositorio público
he llegado con la siguiente solución:
- cifrar la clave secreta utilizando DES triple y una frase de contraseña.
- Ponga la versión encriptada en mi repositorio en alguna parte.
- Cuando necesito autenticar a través de Oauth, solicito la frase de contraseña y recupero la clave secreta.
- Una vez conocido, almacene el secreto en el almacenamiento local para evitar futuras solicitudes.
Estoy esencialmente almacenando una versión transformada de la clave secreta. Supongo que todo lo que esto me compra es que debo obtener la frase de contraseña del usuario en lugar de la clave completa. Debería ser un poco más fácil de recordar que los bytes aleatorios.
¿Es esto suficientemente seguro? No es una aplicación súper crítica, pero quiero hacer todo lo posible para proteger las cosas que me dicen que no comparta. ¿Hay alguna manera mejor que 3DES para encriptar la clave de forma reversible?
Resulta del lado del cliente OAuth realmente no es compatible con github por este mismo motivo de todos modos. No quieren que se muestren las claves secretas. Sin embargo, podría ser útil si se trata de apis menos exigentes. – captncraig
Realmente no entiendo el escenario. ¿Estás tratando de ocultar la clave a github del usuario, a pesar de que están ejecutando el cliente que usa la clave? Si es así, no puedes hacerlo de forma segura; un usuario determinado siempre podrá recuperar esta clave, y desde un punto de vista ético, no debe tratar de ocultar la información almacenada en una máquina de su propietario. Si cada usuario obtiene su propia clave github, y solo está buscando una forma más conveniente de recordarla, su solución es buena. – erickson