2011-12-10 19 views
5

Sono sicuro che questa domanda è stata fatta prima, ma non riesco a trovare un thread che lo spieghi in un modo che abbia senso per me.Come "Proteggere" le chiamate AJAX?

Sto creando un plug-in bookmarklet/browser scritto in Javascript. Questo script effettua chiamate a un'API, inviando in modo efficace le informazioni sull'attività degli utenti da un sito a un altro. (pensa, facendo un tweet quando un utente pubblica uno stato di Facebook)

Questo sito carica javascript direttamente nel sito. L'API che sto utilizzando richiede che venga generato un hash MD5 utilizzando un codice segreto API. Questo non è un problema, sto facendo una chiamata ajax a uno script PHP che sto ospitando altrove, che restituisce la stringa corretta.

Problema è che non voglio che l'utente sia in grado di effettuare una chiamata a questo stesso script per generare le proprie stringhe, con il segreto incorporato per abusare dell'API. È a loro modo che posso consentire chiamate a questa API solo quando voglio realizzarle?

O forse mi sto avvicinando a questo dalla direzione sbagliata.

risposta

0

1) è necessario aprire un token sul DB come GUID.

questo guid rappresenterà alcune informazioni e può essere eseguito solo una volta (inserire un campo db nella tabella denominata "isAlreadyuse" -tipo bit).

ora,

quando l'Ajax chiamerà se stesso - si invia questo GUID al server.

server vedrà se la guid esiste

ed emette la sua logica e aggiornare thefield a "1".

3

Non è possibile dettare come un client esegue il javascript. Non c'è modo di creare una richiesta "sicura" o assicurare che non sia stata modificata da un utente malintenzionato. Questa è la natura del sistema client/server. La pagina stessa può essere modificata utilizzando GreaseMonkey e ogni richiesta può essere modificata o riprodotta utilizzando TamperData.

+0

Gli attacchi di replica possono essere protetti contro ... ma si presume che si tratti di un replay e non di un'operazione [inizialmente] consentita. –

+1

@pst Se è possibile farlo in JavaScript, anche un utente malintenzionato può farlo in JavaScript. – rook

Problemi correlati