Sto imparando i meccanismi di sicurezza web. Ho sviluppato il seguente sistema in PHP e JavaScript:
ammesso che abbia una pagina chiamata: messages.php che è un sistema di chat in tempo reale.
- prima quando viene caricata la pagina, viene generato un ID pagina e quindi una chiave di crittografia viene archiviata in una sessione denominata
$_session["key".page_id]
. utilizzando page_id è possibile utilizzare una chiave di crittografia unica per ogni pagina "messages.php" aperta nel browser. la chiave di crittografia e l'id della pagina vengono anche riportati alla pagina in questo modo:var key = [generated_key_stored_in_session]
evar page_id = [generated_page_id]
. - quando l'utente invia un messaggio, viene prima crittografato utilizzando AES con la variabile
key
come chiave di crittografia. dopo la crittografia, il messaggio crittografato e la variabile page_id verranno inviati al server con il metodo POST utilizzando Ajax. - Ora il server riceve i dati e carica la chiave di crittografia da Session utilizzando il page_id ricevuto. e il messaggio ricevuto verrà decrittografato e memorizzato nel database.
- E ora il server genera una nuova chiave imposta un
$_session["key".page_id]
con quello e quindi echeggia la nuova chiave di crittografia che verrà ricevuta da Ajax e sarà utilizzata per ulteriore crittografia.
Penso che questo metodo non sia sicuro perché la chiave di crittografia viene trasferita come testo ed è possibile leggerla con gli strumenti di monitoraggio del traffico.
Ho letto sull'archiviazione della chiave in un file JavaScript e invio il file al client. come è questo metodo?
Qual è il modo migliore per inviare la chiave? e come posso implementare qui il sistema Chiave pubblica / Chiave privata?