15. Validazione dei messaggi
15. Validazione dei messaggi
I client e i server DOVREBBERO scartare qualsiasi messaggio che contenga opzioni non consentite nel messaggio ricevuto. Per esempio, un'opzione IA non è consentita in un messaggio Information-request. I client e i server POSSONO scegliere di estrarre informazioni da tale messaggio se l'informazione è utile al destinatario.
Un server DEVE scartare qualsiasi messaggio Solicit, Confirm, Rebind o Information-request che riceve con un indirizzo di destinazione unicast.
La validazione dei messaggi basata sull'autenticazione DHCP è discussa nella sezione 21.4.2.
Se un server riceve un messaggio che contiene opzioni che non dovrebbe contenere (come un messaggio Information-request con un'opzione IA), a cui mancano opzioni che dovrebbe contenere, o che non è altrimenti valido, PUÒ inviare un Reply (o Advertise come appropriato) con un'opzione Server Identifier, un'opzione Client Identifier se una era inclusa nel messaggio e un'opzione Status Code con stato UnSpecFail.
15.1. Uso degli ID di transazione
Il campo "transaction-id" contiene un valore usato da client e server per sincronizzare le risposte del server con i messaggi dei client. Un client DOVREBBE generare un numero casuale che non possa essere facilmente indovinato o previsto da usare come ID di transazione per ciascun nuovo messaggio che invia. Si noti che se un client genera identificatori di transazione facilmente prevedibili, potrebbe diventare più vulnerabile a certi tipi di attacchi da intrusi fuori percorso (off-path). Un client DEVE lasciare invariato l'ID di transazione nelle ritrasmissioni di un messaggio.
15.2. Messaggio Solicit
I client DEVONO scartare qualsiasi messaggio Solicit ricevuto.
I server DEVONO scartare qualsiasi messaggio Solicit che non includa un'opzione Client Identifier o che includa un'opzione Server Identifier.
15.3. Messaggio Advertise
I client DEVONO scartare qualsiasi messaggio Advertise ricevuto che soddisfi una qualsiasi delle seguenti condizioni:
- il messaggio non include un'opzione Server Identifier.
- il messaggio non include un'opzione Client Identifier.
- il contenuto dell'opzione Client Identifier non corrisponde al DUID del client.
- il valore del campo "transaction-id" non corrisponde al valore usato dal client nel suo messaggio Solicit.
I server e gli agenti di relay DEVONO scartare qualsiasi messaggio Advertise ricevuto.
15.4. Messaggio Request
I client DEVONO scartare qualsiasi messaggio Request ricevuto.
I server DEVONO scartare qualsiasi messaggio Request ricevuto che soddisfi una qualsiasi delle seguenti condizioni:
- il messaggio non include un'opzione Server Identifier.
- il contenuto dell'opzione Server Identifier non corrisponde al DUID del server.
- il messaggio non include un'opzione Client Identifier.
15.5. Messaggio Confirm
I client DEVONO scartare qualsiasi messaggio Confirm ricevuto.
I server DEVONO scartare qualsiasi messaggio Confirm ricevuto che non includa un'opzione Client Identifier o che includa un'opzione Server Identifier.
15.6. Messaggio Renew
I client DEVONO scartare qualsiasi messaggio Renew ricevuto.
I server DEVONO scartare qualsiasi messaggio Renew ricevuto che soddisfi una qualsiasi delle seguenti condizioni:
- il messaggio non include un'opzione Server Identifier.
- il contenuto dell'opzione Server Identifier non corrisponde all'identificatore del server.
- il messaggio non include un'opzione Client Identifier.
15.7. Messaggio Rebind
I client DEVONO scartare qualsiasi messaggio Rebind ricevuto.
I server DEVONO scartare qualsiasi messaggio Rebind ricevuto che non includa un'opzione Client Identifier o che includa un'opzione Server Identifier.
15.8. Messaggi Decline
I client DEVONO scartare qualsiasi messaggio Decline ricevuto.
I server DEVONO scartare qualsiasi messaggio Decline ricevuto che soddisfi una qualsiasi delle seguenti condizioni:
- il messaggio non include un'opzione Server Identifier.
- il contenuto dell'opzione Server Identifier non corrisponde all'identificatore del server.
- il messaggio non include un'opzione Client Identifier.
15.9. Messaggio Release
I client DEVONO scartare qualsiasi messaggio Release ricevuto.
I server DEVONO scartare qualsiasi messaggio Release ricevuto che soddisfi una qualsiasi delle seguenti condizioni:
- il messaggio non include un'opzione Server Identifier.
- il contenuto dell'opzione Server Identifier non corrisponde all'identificatore del server.
- il messaggio non include un'opzione Client Identifier.
15.10. Messaggio Reply
I client DEVONO scartare qualsiasi messaggio Reply ricevuto che soddisfi una qualsiasi delle seguenti condizioni:
- il messaggio non include un'opzione Server Identifier.
- il valore del campo "transaction-id" nel messaggio non corrisponde al valore usato nel messaggio originale.
Se il client ha incluso un'opzione Client Identifier nel messaggio originale, il messaggio Reply DEVE includere un'opzione Client Identifier e il contenuto dell'opzione Client Identifier DEVE corrispondere al DUID del client; O, se il client non ha incluso un'opzione Client Identifier nel messaggio originale, il messaggio Reply NON DEVE includere un'opzione Client Identifier.
I server e gli agenti di relay DEVONO scartare qualsiasi messaggio Reply ricevuto.
15.11. Messaggio Reconfigure
I server e gli agenti di relay DEVONO scartare qualsiasi messaggio Reconfigure ricevuto.
I client DEVONO scartare qualsiasi messaggio Reconfigure che soddisfi una qualsiasi delle seguenti condizioni:
- il messaggio non è stato inviato in unicast al client.
- il messaggio non include un'opzione Server Identifier.
- il messaggio non include un'opzione Client Identifier che contenga il DUID del client.
- il messaggio non contiene un'opzione Reconfigure Message e il msg-type deve essere un valore valido.
- il messaggio include opzioni IA e il msg-type nell'opzione Reconfigure Message è INFORMATION-REQUEST.
- il messaggio non include l'autenticazione DHCP:
- il messaggio non contiene un'opzione di autenticazione.
- il messaggio non supera la validazione di autenticazione eseguita dal client.
15.12. Messaggio Information-request
I client DEVONO scartare qualsiasi messaggio Information-request ricevuto.
I server DEVONO scartare qualsiasi messaggio Information-request ricevuto che soddisfi una qualsiasi delle seguenti condizioni:
- Il messaggio include un'opzione Server Identifier e il DUID nell'opzione non corrisponde al DUID del server.
- Il messaggio include un'opzione IA.
15.13. Messaggio Relay-forward
I client DEVONO scartare qualsiasi messaggio Relay-forward ricevuto.
15.14. Messaggio Relay-reply
I client e i server DEVONO scartare qualsiasi messaggio Relay-reply ricevuto.