Questo post del blog descrive un metodo per prevenire attacchi di fissazione della sessione (in ASP.Net in particolare). L'idea è che l'id della sessione dovrebbe essere legato all'identità dell'utente in modo verificabile, il che significa che un dato ID di sessione non può essere valido sia per l'attaccante che per la vittima. La loro costruzione utilizza:
select random nonce
session_id = nonce || MAC(nonce || username).
Per un'applicazione che gira su un cluster, la distribuzione o la modifica della chiave MAC può essere scomoda. Cosa si perde se il MAC viene sostituito da un hash non cifrato?
select random nonce
session_id = nonce || Hash(nonce || username).
Significa che un utente malintenzionato può generare id di sessione validi per una determinata identità, ma è comunque vero che un ID di sessione non sarà accettato sia per l'attaccante che per la vittima. C'è un punto debole in questo approccio?