Dichiarazione di non responsabilità: non ho molta familiarità con le tecniche di sicurezza in generale.
Il problema: crea rapidamente molti piccoli file nel server da uno script bash.
Ho usato scp
(copia protetta) per creare quei file ma l'ho trovato estremamente lento con l'operazione di accesso necessaria, anche quando si utilizza una chiave condivisa tramite SSH.
Quindi ho pensato di creare uno script bash e uno script php che condividono una chiave per accelerare l'operazione facendo solo l'essenziale.
Bash del client invia una password finale, il nome file del file da creare, il contenuto di quel file e il secondo UTC corrente.
Nel client, la password finale viene calcolata come:
#pseudocode
final password = sha256( ${currentDateTime}${sharedKey}${remoteFilename}${content} )
La richiesta viene pubblicata sul server usando il comando CURL.
Il PHP del server ora ha la password del client, il nome del file da creare, il contenuto e l'ora UTC in base alla quale è iniziata la richiesta. Il server calcola l'ora UTC completa andando al secondo più vicino al passato che corrisponde al secondo UTC inviato dal client. Ad esempio, se il secondo invio da parte del client = 12 e l'ora UTC del server è 13:42:25, allora il server utilizza 13:42:12.
Server php genera la propria password "reale" (ovvero la password che il client DEVE usare per quella volta UTC (13:42:12 in questo esempio), quel nome file e il contenuto, in base a quella chiave condivisa:
$realPasswd = hash('sha256', $timeString.$sharedKey.$filename.$content);
Quindi il server controlla $realPasswd
rispetto alla password inviata dal client (la cosiddetta password finale a cui ho fatto riferimento in precedenza)
Per quanto riguarda la noobish, questa tecnica dovrebbe essere abbastanza sicura, perché, anche se l'intera richiesta viene annusata da un utente malintenzionato, sarà in grado di inviare esattamente la stessa richiesta e solo per 1 minuto (perché la password finale cambierà per il prossimo minuto UTC).
Non sarà in grado di modificare il nomeFile remoto o il contenuto e sarà in grado di crearlo accettando le richieste del server solo per 1 minuto.
Qual è la tua opinione su questo?