web-dev-qa-db-fra.com

Gestion des robots qui demandent des URL dans les chemins

Dans le journal de mon serveur, j'ai trouvé au moins une adresse IP demandant une URL complète dans un lieu peu pratique. Par exemple, l'en-tête que le client envoie à mon serveur est le suivant:

GET http://www.3rdpartysite.com/file.php HTTP/1.1

Et ici, je m'attends à ce que les en-têtes de requête ressemblent davantage à ceci:

GET /path/to/file.php HTTP/1.1
Host: example.com

Cela me fait penser que des pirates informatiques tentent de casser mon site Web, mais je regarde ici à http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html et il en parle en premier La requête GET est valide pour les mandataires.

Cpanel et whm sont installés sur mon serveur, mais je n'utilise pas de proxy pour mon site Web. Ma question est donc la suivante: si je force Apache à renvoyer une erreur ou à une redirection vers tous les en-têtes de requêtes HTTP commençant par ...

GET http://

... et je demande aux systèmes distants de générer des en-têtes dans ce format ....

GET /path/to/resource HTTP/x.x
Host: example.com

mon idée fonctionnerait-elle avec tous les navigateurs Web? ou au moins un navigateur Web légitime casserait-il?

J'ai juste l'impression qu'un pirate informatique utilise mon serveur pour se connecter à un autre.

3
Mike

Le HTTP 1.1 spec indique très clairement que

GET /path/to/resource HTTP/1.1
Host: example.com

et

GET http://example.com/path/to/resource HTTP/1.1

sont des demandes équivalentes. En effet, la demande commence par Request-Line, défini comme Method-Token Request-URI Protocol-Version, et le Request-URI peut être absolu: "*" | absoluteURI | abs_path | authority.

Vous ne devez pas essayer de configurer votre serveur Web pour répondre différemment aux différents formats de demandes. Vous seriez briser les spécifications. Bien que les navigateurs actuels utilisent généralement l'ancien format de demande, rien ne garantit qu'ils continueront de le faire à l'avenir. Vous ne voulez pas que votre site Web cesse soudainement de fonctionner avec la dernière version de certains navigateurs.


Vous devez plutôt vous assurer que votre serveur ne sert pas de contenu pour des hôtes inconnus. Une demande pour un site tiers doit renvoyer un 404 non trouvé (ou éventuellement 400 mauvaises requêtes). Les bots qui demandent des sites tiers testent généralement des serveurs proxy ouverts.

Un moyen de configurer votre serveur Web pour ce faire consiste à configurer le premier hôte virtuel (par défaut) pour renvoyer une page 404. Chaque site légitime serait dans une directive d'hôte virtuel ultérieure.

1
Stephen Ostermiller

Cela arrive tout le temps. Je le vois au moins une douzaine de fois par jour dans les journaux de mon serveur. Le mieux est d’empêcher la connexion d’entrer au niveau du pare-feu ou de la passerelle afin qu’elle n’atteigne pas votre serveur, sinon, si ce n’est pas si grave pour vous et si cela ne vous cause pas trop de soucis et que vous n’êtes pas très inquiet Si vous ne voyez pas d’autres erreurs liées à cette connexion, vous pouvez l’ignorer en toute sécurité.

0
Chris Rutherfurd