web-dev-qa-db-fra.com

Pourquoi une URL de example.com/n (où n est le même nombre répété 500x) renvoie-t-elle une erreur 403?

J'essaie d'ajouter de nouvelles fonctionnalités à mon site, ce qui implique de passer un tas de paramètres (pouvant être des centaines de paramètres), tous codés au format base64. Lorsque j'essaie la nouvelle URL, une erreur 403 (accès refusé) est générée.

J'ai vérifié qu'il s'agissait d'un problème de longueur, car j'ai ensuite essayé d'accéder au même domaine, mais au lieu du code base64, j'ai utilisé des chiffres après l'URL et j'ai toujours la même erreur.

Si vous avez envie de faire défiler l'écran, vous verrez l'URL à laquelle j'essaie d'accéder:

http://example.com/1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

Je cherchais dans mes fichiers de configuration Apache et la seule chose qui n’a pas de sens est la suivante:

LimitRequestFieldSize 8200
LimitRequestLine 8200

Je dis que cela n’a aucun sens car j’ai défini les valeurs sur 8200, ce qui signifie que j’accepte jusqu’à 8200 caractères dans l’URL (et non 400).

Existe-t-il un paramètre que je peux utiliser dans Apache pour résoudre ce problème, car je sais que c'est un problème Apache mais je ne suis pas sûr du paramètre à corriger.

2
Mike

Sur la base de votre question et de vos commentaires de suivi, il me semble que le problème est lié au fait que vos règles de réécriture ne prennent pas effet. Vous mentionnez que la longue chaîne de nombres est une chaîne codée en base64 d'une grande gamme de paramètres; à partir de cette déclaration, je suppose que la chaîne codée en base 64 n'est pas en fait un dossier auquel vous essayez d'accéder, mais à partir de votre dernier commentaire. 1 janvier à 0:45 vous déclarez

Apache affirme que j'essaie d'accéder à un dossier de cette longueur et que le système de fichiers sous-jacent (linux ext4) prétend que le nom est trop long)

D'après ce commentaire, cela m'indiquerait qu'Apache ne réécrit pas l'URL de sorte que les paramètres codés en base64 soient envoyés à un script à traiter et le traite plutôt comme un répertoire d'accès, auquel cas la chaîne est en fait trop longue pour un répertoire ou un nom de fichier dans le système de fichiers ext4. Examinez vos règles de réécriture et assurez-vous que la chaîne codée bbase64 est réécrite en tant que paramètre dans un fichier de script.

1
Chris Rutherfurd