15. Message Validation (Validation des messages)
15. Message Validation (Validation des messages)
Les clients et serveurs doivent rejeter tout message contenant des options qui ne sont pas autorisées à apparaître dans le message reçu. Par exemple, les options IA ne sont pas autorisées à apparaître dans les messages Information-request. Si les informations sont utiles au destinataire, les clients et serveurs peuvent choisir d'extraire des informations d'un tel message.
Le serveur doit rejeter tout message Solicit, Confirm, Rebind ou Information-request qu'il reçoit avec une adresse de destination unicast.
La validation des messages basée sur l'authentification DHCP est discutée dans la section 21.4.2.
Si le serveur reçoit un message contenant des options qui ne devraient pas être incluses (par exemple, un message Information-request avec des options IA), manquant des options qui devraient être incluses, ou autrement invalide, il peut envoyer un Reply (ou un Advertise approprié) avec l'option d'identificateur de serveur, l'option d'identificateur de client (si incluse dans le message) et une option de code de statut avec le code de statut UnSpecFail.
15.1. Use of Transaction IDs (Utilisation des ID de transaction)
Le champ "transaction ID" contient une valeur utilisée par les clients et les serveurs pour synchroniser les réponses du serveur aux messages du client. Le client devrait générer un nombre aléatoire qui n'est pas facilement devinable ou prévisible à utiliser comme ID de transaction pour chaque nouveau message qu'il envoie. Notez que si le client génère des identificateurs de transaction facilement prévisibles, il peut être plus vulnérable à certains types d'attaques de la part d'intrus hors chemin. Le client doit maintenir l'ID de transaction inchangé dans les retransmissions du message.
15.2. Solicit Message (Message Solicit)
Le client doit rejeter tout message Solicit reçu.
Le serveur doit rejeter tout message Solicit qui ne contient pas d'option d'identificateur de client ou qui contient une option d'identificateur de serveur.
15.3. Advertise Message (Message Advertise)
Le client doit rejeter tout message Advertise reçu qui satisfait l'une des conditions suivantes:
-
Le message ne contient pas d'option d'identificateur de serveur.
-
Le message ne contient pas d'option d'identificateur de client.
-
Le contenu de l'option d'identificateur de client ne correspond pas au DUID du client.
-
La valeur du champ "transaction ID" ne correspond pas à la valeur utilisée par le client dans son message Solicit.
Les serveurs et agents relais doivent rejeter tout message Advertise reçu.
15.4. Request Message (Message Request)
Le client doit rejeter tout message Request reçu.
Le serveur doit rejeter tout message Request reçu qui satisfait l'une des conditions suivantes:
-
Le message ne contient pas d'option d'identificateur de serveur.
-
Le contenu de l'option d'identificateur de serveur ne correspond pas au DUID du serveur.
-
Le message ne contient pas d'option d'identificateur de client.
15.5. Confirm Message (Message Confirm)
Le client doit rejeter tout message Confirm reçu.
Le serveur doit rejeter tout message Confirm reçu qui ne contient pas d'option d'identificateur de client ou qui contient une option d'identificateur de serveur.
15.6. Renew Message (Message Renew)
Le client doit rejeter tout message Renew reçu.
Le serveur doit rejeter tout message Renew reçu qui satisfait l'une des conditions suivantes:
-
Le message ne contient pas d'option d'identificateur de serveur.
-
Le contenu de l'option d'identificateur de serveur ne correspond pas à l'identificateur du serveur.
-
Le message ne contient pas d'option d'identificateur de client.
15.7. Rebind Message (Message Rebind)
Le client doit rejeter tout message Rebind reçu.
Le serveur doit rejeter tout message Rebind reçu qui ne contient pas d'option d'identificateur de client ou qui contient une option d'identificateur de serveur.
15.8. Decline Messages (Messages Decline)
Le client doit rejeter tout message Decline reçu.
Le serveur doit rejeter tout message Decline reçu qui satisfait l'une des conditions suivantes:
-
Le message ne contient pas d'option d'identificateur de serveur.
-
Le contenu de l'option d'identificateur de serveur ne correspond pas à l'identificateur du serveur.
-
Le message ne contient pas d'option d'identificateur de client.
15.9. Release Message (Message Release)
Le client doit rejeter tout message Release reçu.
Le serveur doit rejeter tout message Release reçu qui satisfait l'une des conditions suivantes:
-
Le message ne contient pas d'option d'identificateur de serveur.
-
Le contenu de l'option d'identificateur de serveur ne correspond pas à l'identificateur du serveur.
-
Le message ne contient pas d'option d'identificateur de client.
15.10. Reply Message (Message Reply)
Le client doit rejeter tout message Reply reçu qui satisfait l'une des conditions suivantes:
-
Le message ne contient pas d'option d'identificateur de serveur.
-
Le champ "transaction ID" dans le message ne correspond pas à la valeur utilisée dans le message original.
Si le client a inclus une option d'identificateur de client dans le message original, le message Reply doit contenir une option d'identificateur de client et le contenu de l'option d'identificateur de client doit correspondre au DUID du client. Ou, si le client n'a pas inclus d'option d'identificateur de client dans le message original, le message Reply ne doit pas contenir d'option d'identificateur de client.
Les serveurs et agents relais doivent rejeter tout message Reply reçu.
15.11. Reconfigure Message (Message Reconfigure)
Les serveurs et agents relais doivent rejeter tout message Reconfigure reçu.
Le client doit rejeter tout message Reconfigure qui satisfait l'une des conditions suivantes:
-
Le message n'a pas été unicasté au client.
-
Le message ne contient pas d'option d'identificateur de serveur.
-
Le message ne contient pas d'option d'identificateur de client contenant le DUID du client.
-
Le message ne contient pas d'option de message de reconfiguration et le type de message doit être une valeur valide.
-
Le message contient des options IA et le type de message dans l'option de message de reconfiguration est INFORMATION-REQUEST.
-
Le message ne contient pas d'authentification DHCP:
-
Le message ne contient pas d'option d'authentification.
-
Le message ne passe pas la vérification d'authentification effectuée par le client.
-
15.12. Information-request Message (Message Information-request)
Le client doit rejeter tout message Information-request reçu.
Le serveur doit rejeter tout message Information-request reçu qui satisfait l'une des conditions suivantes:
-
Le message contient une option d'identificateur de serveur et le DUID dans l'option ne correspond pas au DUID du serveur.
-
Le message contient des options IA.
15.13. Relay-forward Message (Message Relay-forward)
Le client doit rejeter tout message Relay-forward reçu.
15.14. Relay-reply Message (Message Relay-reply)
Les clients et serveurs doivent rejeter tout message Relay-reply reçu.