2012-10-15 13 views
5

Recentemente ho distribuito un'applicazione Flask su Heroku. Fornisce un'API su un'API esistente e richiede una chiave API riservata per il servizio originale dall'utente. L'app è in realtà solo alcune forme, i cui valori vengono passati con ajax a un URL specifico sul server. Nulla di bello. Prendo atto di non archiviare informazioni riservate nell'app e non ne voglio traccia in nessuna parte all'interno dell'app.Formato di registrazione del router Heroku

Guardando i registri da heroku logs --source heroku, il processo del router heroku memorizza tutte le richieste HTTP per l'app, comprese quelle che includono le informazioni riservate.

C'è un modo per specificare il formato di registro per il processo heroku in modo da non memorizzare l'URL servito?

+0

Le informazioni riservate sono nell'URL stesso o semplicemente nei dati POST inviati? – aezell

+0

Le informazioni confidenziali sono nell'URL che colpisce l'ajax. – sburns

+1

In tal caso, è possibile utilizzare una sorta di chiave per codificare i dati prima di aggiungerli all'URL e decodificarli quando raggiungono il server? In questo modo, le informazioni non sono in chiaro nei log. Qualcosa come una firma con un nonce e una chiave segreta condivisa dovrebbe funzionare. Non risponde alla domanda, ma potrebbe essere una soluzione alla tua preoccupazione. – aezell

risposta

1

Come altri commentatori hanno menzionato, è una cattiva pratica mettere le informazioni confidenziali in un URL. Questi potrebbero essere memorizzati nella cache o registrati da un certo numero di sistemi (ad esempio router, server proxy, cache) sul viaggio di andata e ritorno verso il server. Ci sono un paio di modi per risolvere questo:

  • Inserirli nello Authorization header. Questo è probabilmente il modo più comune in cui l'autenticazione viene gestita per le API basate su REST.

  • Inserirli nel corpo POST. Questo funziona per estrarlo dall'URL, ma è un po 'strano semanticamente dire che stai inviando le credenziali a qualche risorsa (se questa è un'API REST), a meno che non si tratti di una chiamata di accesso.

+0

Da allora ho refactored l'app per utilizzare le richieste POST. – sburns

+0

Mentre in generale non posso dissentire dal fatto che mettere informazioni confidenziali in un URL può essere rischioso, su una connessione HTTPS i parametri url sono crittografati. Per qualcosa come un'API, l'url param può avere molto senso. Tuttavia, non ho ancora una risposta su come filtrarli dai log del router heroku. – McFadden

Problemi correlati