Per un progetto domestico, sviluppo un'applicazione desktop che richiede chiavi API da diversi servizi Web diversi.Come aprire un'applicazione di origine che utilizza le chiavi API
Ho eseguito e preparato questa applicazione per diventare open source e analizzare il problema di cosa fare con tali chiavi.
Il problema è questo: la mia comprensione è che queste chiavi API non dovrebbero essere visibili a chiunque usi l'applicazione o visualizzi/modifichi il codice sorgente. Dal lato del webservice, queste chiavi API vengono utilizzate per identificare le applicazioni che accedono alle loro API e consentire/bloccare l'utilizzo in modo appropriato. Nella maggior parte dei TOS per ricevere queste chiavi, in realtà si afferma esplicitamente che le chiavi non devono essere condivise con il mondo.
Attualmente tutte le mie chiavi sono fissi, ma io sono in un vicolo cieco su come gestire la situazione di chiavi private in un'applicazione open-source:
-Se le chiavi rimangono hard-coded, hanno sarò visibile pubblicamente non appena il mio codice sorgente sarà.
-Non posso davvero omettere il file sorgente con le chiavi dalla distribuzione del codice, dal momento che quindi non verrà compilato. Questo risolve tecnicamente il problema, ma introduce uno nuovo, inaccettabile .
-Se spengo le chiavi su un file .ini o altro file di configurazione e semplicemente non includo quel file nel mio repository di codice pubblico, dovrebbe comunque essere distribuito con il binario della mia applicazione in modo che app per funzionare, quindi le mie chiavi sarebbero visibili nella distribuzione dell'applicazione anziché nella distribuzione di origine. Non è un miglioramento. Qualsiasi ginnastica di crittografia che ho tentato di utilizzare su questo file INI aggiungerebbe la complessità per chiunque tenti di modificare il mio codice.
Quindi, per quanto riguarda il mio codebase (attualmente sotto Mercurial per il controllo della versione), qual è il modo migliore per gestire tutto in modo che il codice possa essere pubblico, ma le mie chiavi rimangono private?
Quale linguaggio di programmazione stai utilizzando? –
In questo caso sto usando C# – callingshotgun