Sto costruendo uno strumento (molto semplice) per comunicare tra due server. Ho iniziato chiedendo se esistesse un'alternativa migliore rispetto a una sceneggiatura fatta in casa e siamo giunti alla conclusione che per l'antipasto era sufficiente una sceneggiatura fatta in casa. (Nello stack overflow, ma poiché la discussione si è verificata solo nei commenti, la domanda è stata chiusa)
Per chiarire le cose, il progetto è di inviare una richiesta a un server (endpoint di un'app web) da un'app Web (gestore).
Poiché l'endpoint è accessibile da tutti, ho implementato un sistema di verifica per essere un po 'più sicuro. So che un sistema sicuro è qualcosa che è noto a tutti (e non chiuso).
Quindi ecco cosa faccio:
Quando il gestore invia una richiesta, concatena tutto il valore dei parametri che verranno POST, oltre a un token. Quindi sha256
la stringa risultante e invia questo tra i parametri come checksum.
Sull'endpoint, concateno tutti i parametri (eccetto il checksum) e aggiungo il token sicuro, faccio un sha256
e lo confronta con il parametro checksum. Se sono uguali, va tutto bene.
Questo garantisce che i dati inviati non vengano modificati (nel caso qualcuno stia ascoltando la rete), i dati provengono da una fonte attendibile (con il token sicuro che è normalmente noto solo dalle mie app).
L'unico rischio che posso vedere qui è se qualcuno ottiene il token sicuro. Quindi questo protocollo fallisce. Ma nella stessa idea, se qualcuno ottiene la mia password di Facebook, ad esempio, sarà in grado di pubblicare qualsiasi cosa!
È abbastanza? Devo implementare più passaggi. Ho pensato a questi, cosa fai:
- Aggiunta di https negli endpoint
- Verifica l'ip sorgente
Grazie