Memorizza la password nel progetto open source

2

Al momento ho un problema abbastanza semplice, ma non riesco a trovare una soluzione, forse qualcuno qui ha una buona idea.

Sto lavorando su un CMS open source per artisti chiamato Jinya CMS. L'intero progetto è nato da un mio amico che necessitava di un nuovo sito Web per le sue opere d'arte, quindi ho iniziato a costruirle un sito web che si adattava ai suoi bisogni. Uno di questi è che è basato su PHP, ecco perché ho scelto Symfony come base.

In questo momento sto sviluppando la seconda versione e vorrei aggiungere un'opzione per inviare idee su come migliorare le cose nell'amministrazione. La mia idea è un semplice bug e modulo di richiesta di funzionalità e quindi i dati vengono aggiunti alla scheda trello pubblica. A parte questo, verrà inviata una email, che va agli sviluppatori del progetto (attualmente io) che possono quindi reagire.

Il mio problema ora è il seguente, ho bisogno di memorizzare le credenziali per l'accesso alla trello e l'account email che invia i dati.

Ecco le idee che ho avuto e perché penso che non siano buone.

  • Integrazione del caricatore ionCube
    • ionCube non è nulla di male, ma non è giusto crittografare i dati in un progetto OpenSource, inoltre non so se viene eseguito sul suo spazio web abbastanza stabile, ho letto che non lo è.
  • Separa l'API Web per quello scopo
    • Questa idea è la mia preferita attuale, perché eliminerebbe il problema della crittografia del software OpenSource e risolverebbe il problema che ho. Inserendo tutte le credenziali nella configurazione sarei anche in grado di ottenere la licenza di quel codice sotto MIT su Github, come il resto del progetto.

Ora arriva la domanda, questa è una strada percorribile per andare o ci sono modi migliori? Penso che ci debba essere un modo migliore. Qualcuno sa?

Per chiarire, le credenziali di cui sto parlando sono conosciute da me solo da nessun altro.

    
posta Knerd 15.05.2018 - 00:11
fonte

3 risposte

1

Nella tua situazione, penso che l'unica opzione praticabile sia la tua attuale preferita: usa una API web separata. È ampiamente utilizzato in tutto il settore per analisi, diagnostica, feedback e molte altre applicazioni. Ad esempio, prendi un po 'di come Google o Microsoft gestiscono questi tipi di input.

Tuttavia, dovrai davvero pensare di avere un'API pubblica - una che potrebbe essere abusata da utenti esperti di tecnologia che estraggono le richieste dal tuo codice o le annusano usando altri strumenti.

Come @JoeriShoeby menzionato in un commento, è anche molto a prova di futuro e potente nel controllo dell'input da specifiche distribuzioni.

    
risposta data 16.05.2018 - 12:00
fonte
9

Puoi inserire i dati sensibili (e-mail, chiavi API) in un file "env" separato che non viene aggiunto al controllo versione ma configurato durante la distribuzione.

Per facilità d'uso, puoi includere in VCS un file "env.example" con tutti i valori che devono essere riempiti affinché il progetto funzioni correttamente.

Laravel esegue questa operazione: link

per es.

In "env.example" (impegnato in VCS):

EMAIL=
TRELLO_API_KEY=

In "env" (esiste solo nel progetto distribuito):

[email protected]
TRELLO_API_KEY=theRealApiKey
    
risposta data 15.05.2018 - 01:07
fonte
2

Alcuni progetti Open Source risolvono questo problema facendo una schermata di configurazione unica quando si effettua il login la prima volta dove si imposta la password. Lo svantaggio è che l'app ha bisogno di diritti nel DB per modificare una password utente.

Altrimenti lascerei un segnaposto in un file di configurazione per esso e faccio lanciare un'eccezione se la password non è impostata o è ancora l'impostazione predefinita.

    
risposta data 15.05.2018 - 01:04
fonte

Leggi altre domande sui tag