2014-09-04 13 views
7

Sto guardando la seguente guida: https://developers.google.com/youtube/v3/getting-startedProtezione YouTube chiave v3 API in un'applicazione client-side

Il primo passo di interagire con le API di YouTube è:

è necessario un account Google per accedi alla Google Developers Console, richiedi una chiave API e registra la tua applicazione.

E continuano a mostrare un esempio in cui utilizzare il tasto:

URL: https://www.googleapis.com/youtube/v3/videos?id=7lCDEYXw3mM&key=YOUR_API_KEY & parte = frammento, contentDetails, le statistiche, lo stato

Ho un applicazione lato client che viene utilizzata da molte persone. L'applicazione invia richieste di ricerca all'API di YouTube. L'API di YouTube ha un limite di richieste di 50 milioni di richieste al giorno.

Poiché si tratta di un'applicazione lato client, la mia chiave API è incorporata nel codice.

Oggi, un utente malintenzionato script qualcosa al massimo fuori le richieste: enter image description here

mi chiedo che cosa il ricorso devo essere in grado di difendersi da questo tipo di attività. È la mia unica opzione per ospitare un server, instradare tutte le esigenze dell'API di YouTube attraverso il mio server e negare le richieste quando arrivano troppo frequentemente?

Ho delle vere preoccupazioni sull'implementazione di qualcosa del genere. Raddoppierà effettivamente il tempo di attesa per ogni richiesta API e imporrà al server una quantità apparentemente non necessaria, ma forse è necessaria.

Sono disponibili altre opzioni?

Grazie

+0

"client app" == "web app"? O è un'app mobile? – Leo

+0

È un'estensione del browser, quindi è un'applicazione web che non è implicitamente supportata da un server. –

risposta

2

Ciò era dovuto a un aumento del costo di quota, è temporaneamente ripristinato. Annunceremo i cambiamenti di costo in http://apiblog.youtube.com/ e https://developers.google.com/youtube/v3/revision_history andando avanti.

+0

Ehi, l'ho anche detto nel bug report, ma risponderò anche qui. Potresti per favore chiarire cosa intendi temporaneamente ripristinato? L'intenzione di YouTube è di aumentare il costo di un fattore di 150? Sembra egregio. La mia domanda attualmente comporta un costo di 8-10 milioni di punti al giorno. Moltiplicando il costo di 150 sarebbe effettivamente paralizzante la mia domanda. –

0

propongo le seguenti idee:

  • è possibile assicurarsi che l'utente accede la pagina è un essere umano (con Captcha, etc.)
  • Nascondi la tua chiamata API dietro un AJAX chiamata che viene attivata dal tuo front-end (come GET/callgoogleapi);
  • Il gestore della chiamata AJAX può impostare una soglia di frequenza, ovvero 2 richieste al secondo. Se troppo veloce, la chiamata API non viene eseguita e AJAX risponde come "Operazione utente troppo veloce".
+0

Ho menzionato questo nel mio post così come i miei dubbi nel nascondere la richiesta dietro un proxy. Cercare di far gestire al mio server 10 milioni di richieste API al giorno oltre a raddoppiare efficacemente il tempo di risposta sembra una decisione sbagliata, ma l'unica che mi sembra evidente. –

3

È possibile utilizzare la restrizione per proteggere la propria chiave API.

Utilizzare l'attributo REFERERS della chiave pubblica API. Vai al progetto in console developers -> API&Auth -> Credentials

  • Se si utilizza chiave per le applicazioni del browser, REFERERS è un riferimento a un dominio.
  • Se si utilizza la chiave server, REFERERS è un riferimento a un IP. (ip del server, ad esempio)

Ad esempio, se si utilizza github.io per fare demo live di un'applicazione, REFERERS punterà su http://user.github.io/*

Si può leggere di più register your application

  • Utilizzare una chiave del server se l'applicazione viene eseguita su un server. Non utilizzare questa chiave al di fuori del codice del server. Ad esempio, non incorporarlo in una pagina Web . Per prevenire il furto di quota, limita la tua chiave in modo che le richieste siano consentite solo dagli indirizzi IP di origine dei tuoi server.

  • Utilizzare una chiave del browser se l'applicazione viene eseguita su un client, ad esempio un browser Web. Per evitare che la chiave venga utilizzata su siti non autorizzati, autorizzare solo referral dai domini amministrati.

una schermata che consentono di:
enter image description here

+0

Le estensioni del browser non hanno un referrer per impostazione predefinita e possono effettivamente modificare il referrer intercettando le intestazioni delle richieste tramite chrome.webRequest.onBeforeSendHeaders. :(Stessa cosa con limitazione per utente basata su indirizzo IP - potevano semplicemente modificare l'indirizzo IP da quando è stato inviato dal client. –

4

Non credo che sia un utente malintenzionato. Penso che ci sia qualcosa di sbagliato da parte di YouTube, dal momento che sto vedendo esattamente lo stesso problema con le richieste API fatte dalla mia app enter image description here

+0

WOW !! Really? Holy crap! –

+1

Sì.Altri vedono lo stesso problema: http://stackoverflow.com/questions/25657245/youtube-data-api-daily-requests-went-da-2-7mn-to-43mn-in-one-day?lq=1 e http://stackoverflow.com/questions/25670351/youtube-api-v3-every-single-request-is-counted-as-300-requests?lq=1 – cujo30227

+2

Sembra che ogni 1 richiesta ora 'conta' per 150 – cujo30227

1

Sembra essere un grosso problema. Lo stesso problema qui - l'utilizzo delle quote è aumentato come un matto a partire dal 3 settembre e le richieste ora costano più del documentationstates.

Qualcuno ha segnalato che è un difetto nel loro sistema di tracciamento dei bug. Suggerisco a tutti interessata andare lì e stella del difetto di aiutare richiamare l'attenzione ad esso:

-1

Vediamo anche questo errore, sembra essere troppo grandi deviazioni. risultati La panoramica è 813.844, ma le API sono utilizzate 49.379.348 di 50.000.000 di richieste oggi

0

Ciò è corretto. Quando fai la tua chiave assicurati di usare i REFERER in modo che anche se ottengano la tua chiave non funzionerà per loro!

+0

La mia domanda era per le estensioni di Chrome che non hanno referer, sfortunatamente. –

Problemi correlati