Vous affichez une erreur 403 ou 404 par sécurité ?
Ta question n'a aucun sens, les codes HTTP ont une signification. 403 pour Forbidden (pas le droit d'accéder à la page) et 404 pour Not Found (la page n'existe pas).
Il faut envoyer le code qui correspond à la réalité, c'est tout.
Le 17 août 2023 à 16:41:48 :
Ta question n'a aucun sens, les codes HTTP ont une signification. 403 pour Forbidden (pas le droit d'accéder à la page) et 404 pour Not Found (la page n'existe pas).Il faut envoyer le code qui correspond à la réalité, c'est tout.
D'un point de vue sécu, différencier les codes http permet à un visiteur de lister les repertoires/endpoints existants pour récupérer la structure du site.
200 : le dossier/page existe
403 : le dossier/page existe mais interdit
404 : on n'en sait pas plus
vs
200 : le dossier/page existe
404 : on n'en sait pas plus
Sémantiquement c'est mal mais pour l'aspect sécu il vaut mieux unifier en répondant avec le même code (404, 302,...)
Si tu veux faire de la sécurité, tu shoot le mec quand tu détectes le scan.
Indiquer de mauvais code HTTP, ce n'est pas de la sécu.
Je suis du même avis que deepblue et grand_smurf, les codes HTTP ont une signification et mettre le même code HTTP partout pour éviter qu'on puisse scanner facilement ton site, c'est de la mauvaise sécu.
C'est mieux mettre des codes HTTP qui correspondent pour informer les browsers et les robots, voir pour d'éventuel API. Si une ressource ne doit pas être accessible à un certain user (ou type d'user), alors il faut renvoyer un code 403. Qu'on sache qu'il y a une page "inaccessible" à cet endroit là ne va pas être fort utile si la sécurité pour passer est forte.
C'est comme afficher à la vue de tout le monde un coffre fort ultra sécurisé : les gens savent qu'il est là mais ils ne peuvent pas y accéder sans la clé pour l'ouvrir. Donc ça leur fera une belle jambe.
Si une ressource ne doit pas être accessible à un certain user (ou type d'user), alors il faut renvoyer un code 403. Qu'on sache qu'il y a une page "inaccessible" à cet endroit là ne va pas être fort utile si la sécurité pour passer est forte.
C'est comme afficher à la vue de tout le monde un coffre fort ultra sécurisé : les gens savent qu'il est là mais ils ne peuvent pas y accéder sans la clé pour l'ouvrir. Donc ça leur fera une belle jambe.
L'info de l'existance d'une ressource, prise de manière isolée, peut être insignifiante si l'accès à cette ressource est sécurisé. Par contre couplé à une ou plusieurs autres vulnérabilités, ça peut devenir un problème (sécurité en couches)
C'est pourquoi la RFC HTTP nous permet d'utiliser un 404 au lieu du 403 si l'on veut cacher une ressource :
"An origin server that wishes to "hide" the current existence of a forbidden target resource MAY instead respond with a status code of 404 (Not Found)."
https://www.rfc-editor.org/rfc/rfc9110.html#name-403-forbidden