Come consentire agli utenti di inviare a un link

-2

Sto costruendo per il servizio di un cliente che consente agli sviluppatori di creare moduli lato client, simili a formspree.io, ecc. Fondamentalmente, gli sviluppatori possono impostare un'azione sui loro moduli HTML che inviano i dati POST al mio servizio. Tuttavia, ho bisogno di un modo per autenticare le richieste.

Formspree lo fa come: <form action="https://formspree.io/[email protected]" method="POST"> .

Ma il cliente vuole pagare per ogni richiesta. Quindi ho bisogno di un modo per assicurarmi che quando XYZ.company inserisce un modulo sul loro sito web, vengono addebitate solo le richieste che effettivamente fanno.

Penso che potrei emettere una chiave, fare in modo che il server degli utenti la cripta in qualche modo e poi generare un collegamento casuale?

idee?

    
posta Muhambi 05.08.2017 - 19:20
fonte

1 risposta

1

Un paio di idee mi vengono in mente ... Non sono sicuro di quale lingua stai usando, ma sul tuo server puoi controllare l'URL di riferimento e accettare solo le richieste che corrispondono a qualsiasi dominio (i) sono validi.

Tuttavia, credo che le intestazioni degli URL di riferimento possano essere facilmente falsificate. Puoi ancora farlo, perché le richieste valide lo avranno e probabilmente mitigheranno alcune minacce.

Una seconda idea che ho è (per ogni dominio che è valido) emettere qualche tipo di chiave segreta che il tuo client mantiene solo sul lato server. Quando viene caricata la pagina con il modulo, chiama (sul lato server) un servizio che hai e passa nella chiave segreta e convalida se è valido; in caso affermativo, rispedisci un token generato e lo memorizzi in un database. Questo token dovrebbe essere passato alla tua vista e inserito nel modulo in qualche modo.

Il token dovrebbe essere solo per 1 volta. Forse memorizzi l'indirizzo IP dell'utente e / o una data di scadenza dalla tua parte e, quando il modulo ti invia, sarà in grado di convalidare il token è valido (che viene da te in primo luogo), non ha superato la scadenza e il l'invio di moduli proviene dallo stesso luogo di provenienza. Elimina il token nel tuo database dopo che è stato utilizzato per l'invio di un modulo.

    
risposta data 06.08.2017 - 20:01
fonte

Leggi altre domande sui tag