Wir haben festgestellt, dass wir von Zeit zu Zeit eine HTTP-Anfrage ohne eine gültige User-Agent-Zeichenfolge erhalten. Gibt es einen gültigen praktischen Fall für die Annahme dieser Art von HTTP-Anfrage?
d. Warum blockieren wir nicht automatisch alle IPs, von denen diese Art von Anfrage empfangen wird?
UPDATE Meine Intention mit dem Ausdruck "real-world" sollte zeigen, dass ich nicht danach frage, was technisch passieren kann oder was nicht. Natürlich ist es möglich, HTTP-Anfragen ohne Header zu senden. Ich frage mich, welchen "realen" Fall Sie haben würden, um diese Art von HTTP-Anfrage in Ihren Server zu erlauben.
Wie in RFC 7231 angegeben (Aber fast derselbe Absatz findet sich in RFC2616 ):
5.5.3 Benutzer-Agent
Das Headerfeld "User-Agent" enthält Informationen über den User Agent, der die Anfrage ausgelöst hat, Dies wird häufig von Servern verwendet, um den Umfang der gemeldeten Interoperabilitätsprobleme zu ermitteln. um Antworten zu umgehen oder anzupassen, um bestimmte Benutzeragenteneinschränkungen zu vermeiden, und für Analysen in Bezug auf Browser oder Betriebssystem verwenden. Ein User-Agent SOLLTE ein User-Agent-Feld in jedem senden Anfrage, sofern nicht speziell konfiguriert, dies nicht zu tun.
Das Schlüsselwort hier ist SOLL. Und ja, es gibt einen RFC, der definiert, was dieses Wort bedeuten soll, RFC 2119 :
- SOLLTE Dieses Wort oder das Adjektiv "EMPFOHLEN" bedeuten, dass dort Unter bestimmten Umständen kann es Gründe geben, einen zu ignorieren bestimmter Artikel, aber die vollständigen Auswirkungen müssen verstanden werden und sorgfältig abgewogen, bevor Sie einen anderen Kurs wählen.
Obwohl also die Agenten, die den User-Agent nicht senden, nicht dem folgen, was als Best Practice angesehen werden kann, verstoßen sie gegen keine Regel (rfc). Also, meiner Meinung nach gibt es keinen wirklich technischen Grund, sie zu blockieren.
Tags und Links http