Domanda

Sono abbastanza sicuro che la risposta di quello che ho intenzione di chiedere è NO, ma forse qualcuno mi può dare un'idea diversa, in modo che sto chiedendo in ogni caso.

sto sviluppando un pannello di controllo che recupera le informazioni sotto forma di un terzo webservice interlocutore tramite una chiamata API. Potrei fare una chiamata con AJAX che restituiscono il risultato in millisecondi sul browser, ma sarei esponendo l'API Key di questo servizio. Anche se questa è un'intranet con accesso riservato, un dipendente potrebbe annusare intorno e ottenere la chiave API privato con solo a guardare la finestra di attività di Safari, per esempio. I dipendenti sono affidabili, ma non voglio rischiare la mia sicurezza di sviluppo su un solo fidarsi.

Quello che sto facendo ora è AJAXing un PHP che effettua la chiamata con una chiamata CURL ma si impiegano circa 2 o 3 secondi per farlo: non il php per sé, l'hosting condiviso di andare al server partito 3 ° e ritorno.

C'è un modo per rendere il browser fare la richiesta direttamente alle API senza esporre la chiave privata? Credo che, per definizione, è impossibile, ma sto condividendo lo scenario così forse qualcuno ha un'idea migliore (sto cercando di evitare di cache di quanto le informazioni cambiamenti recuperati dal secondo)

Non essendo la questione Ho un dubbio relativo a questo: Se faccio la chiamata API tramite CURL su Mac OS terminale o in un Apache locale, che serve come 12 secondi ogni volta per ottenere il risultato, ma un browser nella stessa identica computer e connessione ottiene in millisecondi. Io non sono molto a conoscenza di come funziona internamente CURL ma o CURL è un meccanismo lento o non funziona bene nel mio Mac.

Grazie

È stato utile?

Soluzione

No, dal momento che il codice JavaScript viene inviato ed eseguito su computer del client, non c'è alcun modo per non esporre la chiave API in qualche modo. Crittografia / offuscando sarebbe inutile, come un utente esperto potrebbe utilizzare un colpo di testa viewer / packet sniffer per estrarre la chiave di testo in chiaro dalle richieste API in ogni modo.

L'unico modo per non esporre la chiave per l'utente non è lasciare che l'utente mai entrare in possesso di esso, il che significa proxy le richieste.

Altri suggerimenti

No, quando il browser richiede il servizio l'utente può sempre fiutare la chiave. Quindi, per usare il PHP come proxy è una buona soluzione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top