Sécurité grùce à la restriction des utilisateurs ou comment créer une vulnérabilité

En 2019, la vulnérabilité CPDoS Cache Poisoned Denial of Service) a été découverte sur le réseau CDN, ce qui permet d'empoisonner le cache HTTP du fournisseur CDN et de provoquer un déni de service. La vulnérabilité n'a pas encore recueilli beaucoup de battage médiatique, car elle n'a pas été vue dans de vraies attaques. Mais je veux parler séparément d'une des méthodes d'empoisonnement du cache. Substitution de méthode HTTP.


Si d'autres variantes d'exploitation de la vulnĂ©rabilitĂ© d'une maniĂšre ou d'une autre s'appuient sur des bogues ou des fonctionnalitĂ©s de modification de demande par un intermĂ©diaire, alors la variante de substitution de mĂ©thode est basĂ©e sur la tactique du mĂȘme nom, qui ne fait pas partie de la norme HTTP, entraĂźne des problĂšmes supplĂ©mentaires, et qui sont survenus et se sont propagĂ©s en raison d'une nĂ©gligence relation avec la sĂ©curitĂ©. Ici, nous allons l'examiner.

Bref sur CPDoS si vous l'avez manqué
, URI method .

, , , , - . — - - -, , - , . , .

, . , , -. - , , .


Limitez le client, moins peut - moins se cassera


Le besoin mĂȘme de remplacer la mĂ©thode dans la demande est dĂ» au fait que certains pare-feu d'application Web et implĂ©mentations client HTTP Ă©taient trĂšs limitĂ©s et ne permettaient pas l'exĂ©cution de mĂ©thodes autres que GET et POST. Le problĂšme n'est pas qu'il s'agissait d'une restriction d'implĂ©mentation, mais qu'il s'agissait d'une restriction intentionnelle des clients HTTP par une politique de sĂ©curitĂ©.

Il est clair que tout a Ă©tĂ© rĂ©alisĂ© avec la bonne intention de couper le trafic exigu, non standard pour les clients HTTP ordinaires. Mais dans un souci de sĂ©curitĂ©, toutes les mĂ©thodes sauf GET et POST ont Ă©tĂ© supprimĂ©es. Peut-ĂȘtre parce que ce sont les seules mĂ©thodes qui ne sont pas facultatives et requises pour les serveurs Ă  usage gĂ©nĂ©ral.

La raison pour laquelle il Ă©tait nĂ©cessaire d'introduire une restriction aussi stricte n'est pas claire. Oui, les attaques avec l'introduction de diffĂ©rents caractĂšres afin de confondre l'analyseur ne sont que le passe-temps des protocoles de texte. Mais vous pouvez autoriser un peu plus de mĂ©thodes, par exemple, prendre au moins celles qui sont dĂ©crites dans la norme elle-mĂȘme ou enregistrĂ©es auprĂšs de l'IANA . Cela ne valait pas la peine de supprimer complĂštement la vĂ©rification des mĂ©thodes, mais vous pouvez composer un certain nombre des mĂ©thodes les plus populaires et en exclure celles qui modifient le protocole d'interaction et interrompent le travail avec les connexions sur le serveur proxy (CONNECT). Mais non, il s'est avĂ©rĂ© une politique de sĂ©curitĂ© qui a introduit des restrictions et des interdictions inutiles pour les clients.

Et les clients étaient limités aux mauvais. Ils voulaient limiter la variabilité des messages des clients HTTP et limitaient les clients protégés par ces WAF, les serveurs d'applications finaux et leurs développeurs. Désormais, les développeurs n'avaient plus que deux méthodes qui n'étaient pas toujours suffisantes pour décrire la logique du client HTTP.

Des contraintes sont créées pour les surmonter.


Il était à prévoir que cette restriction excessive commencerait tÎt ou tard à interférer avec les développeurs Web. L'ironie est qu'il est si facile de ne pas se débarrasser de ces WAF. Surtout quand ils sont avec des clients ou des fournisseurs. Remettre en question les politiques de sécurité des autres est une affaire désastreuse.

En raison de la flexibilitĂ© de HTTP, il n'est pas difficile de contourner cette limitation; ajoutez simplement quelque chose Ă  la demande oĂč vous pouvez remplacer la mĂ©thode. Strict WAF vĂ©rifiera uniquement la mĂ©thode dans la ligne de demande (la premiĂšre ligne de la demande) et sera heureux de voir un GET ou POST approuvĂ© lĂ -bas. Et le backend pourra analyser l'Ă©lĂ©ment ajoutĂ© et en extraire la vraie mĂ©thode.

Vous pouvez google un tas d' articles, vraiment un tassur la façon dont les proxys dĂ©fectueux ont brisĂ© les applications REST, et comment les auteurs ont dĂ» passer la vraie mĂ©thode dans un en-tĂȘte sĂ©parĂ©. Dans chacun d'eux, ils suggĂšrent que vous saisissiez approximativement le mĂȘme en-tĂȘte (mĂ©thode X-HTTP, mĂ©thode X-HTTP-Override ou mĂ©thode X-Override - l'orthographe varie quelque peu) pour indiquer une mĂ©thode remplacĂ©e. TrĂšs, trĂšs rarement, on peut trouver des rĂ©fĂ©rences qui peuvent ĂȘtre utilisĂ©es pour le mĂȘme objet URI de composant de requĂȘte.

Ce qui manque dans ces articles, c'est la section Considérations sur la sécurité. Et ils le sont.

La méthode est-elle sûre?


Parfois, les développeurs d'applications Web oublient qu'entre le client et le serveur, il peut y avoir des participants intermédiaires qui interagissent via le protocole HTTP: mandataires, caches Web des fournisseurs, CDN et WAF. La prolifération de TLS réduit considérablement les chances d'un participant intermédiaire entre le client et le serveur. Le seul proxy entre le client et le backend sera probablement son propre serveur avec Nginx. Et une telle configuration est assez facile à tester sur des scénarios typiques avant sa sortie.

Mais nous entrons dans l'Úre du CDN, et de plus en plus d'applications se cacheront derriÚre les CDN qui lisent et manipulent le trafic des utilisateurs. Les backends ne servent presque jamais directement les utilisateurs et se cachent derriÚre des proxys inversés pour augmenter la réactivité et les performances. Par conséquent, vous devrez vous rappeler comment le remplacement d'une méthode peut affecter le traitement d'une demande sur un serveur de médiation.

Les attaques dont je veux parler s'appliquent principalement à HTTP / 1.1. HTTP / 2 hérite en quelque sorte du comportement de l'ancienne norme, à certains égards suit sa propre voie, donc l'applicabilité de chaque attaque à la nouvelle norme sera considérée séparément.

Attaques de cache


Le plus souvent, les serveurs intermĂ©diaires ne prennent pas en compte les remplacements de mĂ©thode, ne vĂ©rifient pas les en-tĂȘtes de la famille X-HTTP-Method-Override et travaillent avec la demande en utilisant sa mĂ©thode principale Ă  partir de la ligne de demande. Et puisque la mĂ©thode remplacĂ©e n'est pas incluse dans la clĂ© pour rechercher une demande dans le cache (mĂ©thode + URI), ces serveurs ne peuvent pas distinguer POST de POST + X-HTTP-Method-Override: DELETE. Cela signifie que vous ne pouvez pas autoriser la mise en cache des requĂȘtes vers un certain URI si le backend peut surveiller et exĂ©cuter des mĂ©thodes remplacĂ©es.

Le document CPDoS a un bon exemple de ce qui se passe si vous mettez en cache une telle demande. Lorsqu'un attaquant dĂ©guise une demande POST en demande GET, le proxy ne reconnaĂźt pas les substitutions et traite la demande comme une demande GET lĂ©gitime. Le backend, cependant, reconnaĂźt la mĂ©thode substituĂ©e et exĂ©cute le verbe dĂ©crit dans l'en-tĂȘte X-HTTP-Method-Override - POST. Étant donnĂ© que la mĂ©thode POST n'est pas dĂ©finie pour l'URI de destination, le serveur gĂ©nĂšre une erreur. En outre, la rĂ©ponse de backend est stockĂ©e dans le cache en tant que rĂ©ponse Ă  la mĂ©thode d'origine - GET. Maintenant, toute prochaine requĂȘte GET pour le mĂȘme URI retournera une erreur mise en cache.


En fait, l'attaque est lĂ©gĂšrement plus large que celle prĂ©sentĂ©e dans le document. Les auteurs se sont concentrĂ©s sur le stockage de l'erreur dans le cache, qui n'est pas partout (dĂ©jĂ ) reproductible. Mais si la mĂ©thode demandĂ©e pour l'URI sĂ©lectionnĂ© est dĂ©finie et sera exĂ©cutĂ©e avec succĂšs, le proxy recevra une rĂ©ponse avec un Ă©tat de 200 et la mettra en cache. Ensuite, les demandes suivantes du mĂȘme URI pour recevoir des rĂ©ponses Ă  la mĂ©thode complĂštement erronĂ©e. Dans ce scĂ©nario, il n'y a plus d'exigence avec une erreur de cache de rĂ©ponses 4XX, comme dans la description CPDoS d'origine.

Le problÚme inverse peut se produire. Si un client HTTP respectable envoie une demande GET + X-HTTP-Method-Override: PATCH (c'est mauvais, mais plus à ce sujet plus tard), et le cache a déjà une réponse GET, alors le client recevra cette réponse en cache. Dans ce cas, le backend ne recevra jamais de demande PATCH, ce qui peut violer la logique d'application sur le client et le serveur.

Vous pouvez rĂ©duire l'effet sur le cache en crĂ©ant les stratĂ©gies de mise en cache correctes et en divisant les ressources en deux groupes: ceux pour lesquels l'opĂ©ration de substitution de mĂ©thode est inacceptable ou non requis, les rĂ©ponses Ă  ceux-ci peuvent ĂȘtre mises en cache et celles pour lesquelles l'opĂ©ration de remplacement de mĂ©thode est nĂ©cessaire, toute mise en cache de ces rĂ©ponses est inacceptable . Mais moins les ressources sont mises en cache, moins le CDN est utile et plus le trafic atteint le backend, plus l'application est exposĂ©e au dĂ©luge HTTP.

Par consĂ©quent, il est prĂ©fĂ©rable d'utiliser le cache HTTP autant que possible, pour cela, il est nĂ©cessaire que le serveur de cache puisse distinguer les demandes avec diffĂ©rentes mĂ©thodes remplacĂ©es. La premiĂšre façon consiste Ă  transfĂ©rer le remplacement de mĂ©thode du composant de requĂȘte vers l'URI:

POST /some-uri HTTP/1.1
X-HTTP-Method-Override: DELETE
   ↓  ↓   ↓
POST /some-uri?method=DELETE HTTP/1.1

DĂ©sormais, les requĂȘtes avec diffĂ©rentes mĂ©thodes sont diffĂ©rentes pour le cache, car elles obtiennent des clĂ©s diffĂ©rentes. Certains mandataires prĂ©fĂšrent ne pas mettre en cache les rĂ©ponses aux demandes contenant le composant de requĂȘte dans l'URI. Mais cela n'affectera que l'efficacitĂ© de la mise en cache. Cette mĂ©thode rĂ©sout toujours les problĂšmes de mise en cache incorrecte.

Une autre façon consiste Ă  laisser la mĂ©thode remplacer dans un en-tĂȘte sĂ©parĂ©, mais entrez une clĂ© secondaire pour trouver la rĂ©ponse dans le cache. Cela est possible avec l'en-tĂȘte Vary. Lors du traitement de la demande, le serveur rĂ©pĂ©tera l'en-tĂȘte avec la mĂ©thode override et reflĂ©tera le nom de cet en-tĂȘte dans l'en-tĂȘte Vary. Ensuite, aux demandes suivantes, le serveur de cache utilisera la valeur de la mĂ©thode remplacĂ©e comme clĂ© secondaire lors de la recherche d'une demande dans le cache.


Cette méthode fonctionne si le serveur intermédiaire peut fonctionner avec des clés secondaires. C'est généralement le cas, mais le niveau de confiance du proxy, qui coupe toutes les méthodes sauf GET et POST, est généralement plus bas et il est préférable de le vérifier.

Remplacer une mĂ©thode par le biais de n'importe quelle entitĂ© Ă  l'intĂ©rieur du corps de la demande prĂ©sente exactement les mĂȘmes inconvĂ©nients que le remplacement par un en-tĂȘte supplĂ©mentaire - cela est hors de la visibilitĂ© du cache.

Attaques Message Queuing


MĂȘme si les attaques de cache sont fermĂ©es, ce n'est pas tout. Un attaquant en redĂ©finissant une mĂ©thode peut essayer de modifier le cadrage de la rĂ©ponse et ainsi violer la correspondance des paires requĂȘte-rĂ©ponse pour les autres clients. Ou forcez le cĂŽtĂ© serveur de l'application Ă  traiter plusieurs fois la mĂȘme demande.

La chose la plus importante qui est requise pour cela est un serveur intermédiaire fonctionnant en mode proxy inverse. Autrement dit, tout serveur de mise en cache ou CDN. Un tel proxy prend en charge un nombre relativement faible de connexions au backend et multiplie les demandes de nombreux clients dans chacun d'eux. Cela est nécessaire à la fois pour prendre la charge de la prise en charge d'un grand nombre de connexions clientes des backends vers le serveur proxy et pour équilibrer la charge entre les backends. La terminaison des connexions TLS se produit également sur le proxy, les connexions client ne sont jamais connectées directement au backend.

Étant donnĂ© que maintenant les demandes de diffĂ©rents clients seront dans la mĂȘme connexion entre le backend et le proxy, il est nĂ©cessaire de maintenir une correspondance claire entre les paires requĂȘte-rĂ©ponse. La plupart des procurations ne prĂ©voient pas(pipelines) envoie des requĂȘtes au backend et fonctionne avec lui en mode de rĂ©ponse aux requĂȘtes. Le mode demande-rĂ©ponse est plus simple et soumis Ă  pratiquement une menace: le blocage de la connexion. Si vous Ă©tablissez la connexion sur une seule paire demande-rĂ©ponse, vous pouvez provoquer un retard, voire un refus, pour traiter les demandes suivantes (par exemple, si vous rĂ©ussissez Ă  dĂ©border les files d'attente de demandes de procurations).

Des proxies plus productifs acheminent les requĂȘtes vers le backend - cela vous permet d'envoyer immĂ©diatement un paquet de requĂȘtes au serveur et d'attendre leur exĂ©cution. Les performances sont supĂ©rieures, mais les menaces sont plus nombreuses. PremiĂšrement, le problĂšme du blocage en tĂȘte de ligne ne disparaĂźt nulle part - mĂȘme si le backend peut ratisser le pipeline de requĂȘtes et les exĂ©cuter en parallĂšle, elles ne peuvent pas ĂȘtre envoyĂ©es si la premiĂšre d'entre elles se bloque. DeuxiĂšmement, si vous cassez le cadrage de la rĂ©ponse, vous pouvez confondre le proxy et rompre la correspondance des paires demande-rĂ©ponse, puis certains clients peuvent obtenir les rĂ©ponses d'autres personnes, ou au moins parvenir Ă  une fermeture de connexion instantanĂ©e avec le backend.


La redĂ©finition la plus simple et la plus amusante d'une mĂ©thode consiste Ă  remplacer GET par le verbe HEAD. Si la rĂ©ponse Ă  la premiĂšre a un corps, la seconde non. De plus, tous les autres en-tĂȘtes sont identiques, y compris ceux qui fournissent le cadrage de la demande. Lorsque le proxy redirige une telle HEAD remplacĂ©e vers le serveur, il attend du serveur non seulement les en-tĂȘtes de rĂ©ponse, mais aussi le corps de rĂ©ponse, que le backend ne va pas envoyer. Si le proxy et le serveur interagissent dans le mode de demande-rĂ©ponse, la connexion se "bloque" jusqu'Ă  ce qu'elle soit interrompue par le dĂ©lai d'expiration.

Si le serveur envoie les rĂ©ponses suivantes (mode pipeline), elles peuvent ĂȘtre analysĂ©es non pas comme des rĂ©ponses indĂ©pendantes, mais dans le cadre de la rĂ©ponse incomplĂšte prĂ©cĂ©dente Ă  l'EEG. Le proxy les placera (ou une partie d'entre eux) dans le corps de la rĂ©ponse "GET" et l'enverra Ă  l'attaquant pour les lire. Vous pouvez crĂ©er un tel pseudo-GET pour recevoir un fichier volumineux et vider du trafic entre le proxy et le backend. Le succĂšs dĂ©pend de la façon dont le backend place le Content-Length et le Transfer-Encoding: des en-tĂȘtes fragmentĂ©s pour encadrer les messages. Le premier vous permettra presque toujours d'obtenir un vidage, le second gĂ©nĂ©rera souvent des erreurs d'analyse et provoquera une dĂ©connexion du backend. Si vous n'ĂȘtes pas du tout chanceux, le pseudo-GET peut couvrir plusieurs rĂ©ponses dans son intĂ©gralitĂ© et se terminer juste avant la rĂ©ponse suivante.Le proxy ne pourra pas du tout reconnaĂźtre ce problĂšme et pour d'autres rĂ©ponses Ă  cet Ă©gard, la correspondance demande-rĂ©ponse sera violĂ©e.


MĂȘme si tout ce qui a Ă©tĂ© rĂ©alisĂ© en remplaçant la mĂ©thode a Ă©tĂ© de fermer la connexion entre le proxy et le backend, cela peut suffire pour une attaque. Vous pouvez lancer des demandes de service avec de telles demandes - les connexions avec les backends seront constamment interrompues. Il n'y en a pas tellement, et la redĂ©couverte prend du temps, par consĂ©quent, vous pouvez rĂ©duire considĂ©rablement les performances de communication du serveur proxy et ainsi rĂ©duire le dĂ©bit du service.

Relecture automatique du spam


J'ai dit ci-dessus que les demandes de la forme GET + X-HTTP-Method-Override: PATCH de clients respectables sont mauvaises. Et c'est mauvais parce que les mĂ©thodes ont deux propriĂ©tĂ©s: la sĂ©curitĂ© et l' idempotence . La sĂ©curitĂ© signifie que la mĂ©thode ne modifie pas l'Ă©tat du serveur (lecture seule) et ne nous intĂ©resse pas dans le cadre de cet article. L'idempotence de la mĂ©thode garantit que la demande rĂ©pĂ©tĂ©e a le mĂȘme effet qu'une demande unique. Vous pouvez faire une analogie: (a = 5)- requĂȘte idempotente, et (a += 2) - non idempotente.

Cette propriĂ©tĂ© est ce qui nous intĂ©resse. Si la connexion entre le client et le serveur se brise soudainement, le client, sachant que la mĂ©thode est idempotente, peut renvoyer automatiquement la demande. Les mandataires se comportent de la mĂȘme maniĂšre. Les requĂȘtes non idempotentes ne sont pas rĂ©pĂ©tĂ©es automatiquement car on ne sait pas comment elles affectent le serveur et ce que le client recevra Ă  la fin. Je pense que tout le monde connaĂźt les fenĂȘtres contextuelles du navigateur: "Voulez-vous vraiment rĂ©pĂ©ter la demande?"

Si vous masquez une mĂ©thode non idempotente comme idempotente, en cas d'erreurs, elle ne sera pas supprimĂ©e, mais sera Ă  nouveau redirigĂ©e vers le serveur. MĂȘme si le client considĂ©rera la mĂ©thode de demande rĂ©elle avant de soumettre Ă  nouveau la demande, cela n'aidera pas beaucoup, car le serveur proxy ne connaĂźt pas la substitution de mĂ©thode et rĂ©pĂ©tera ces demandes.

Si un attaquant est en mesure de forcer les dĂ©connexions entre le backend et les clients, il pourra amener le serveur Ă  exĂ©cuter Ă  plusieurs reprises des requĂȘtes non idempotentes et Ă  rĂ©duire la fiabilitĂ© et la prĂ©visibilitĂ© de l'application. Dans la section prĂ©cĂ©dente, nous venons de trouver un moyen de provoquer des ruptures de connexion avec la mĂȘme substitution de mĂ©thode. Bien qu'il ne faut pas oublier qu'Internet est un rĂ©seau peu fiable, par dĂ©finition, et que l'application elle-mĂȘme est en danger.

Pour vous protéger contre cette attaque, vous ne devez utiliser que des méthodes qui n'ajoutent pas de nouvelles propriétés à la demande en tant que transport. POST est un bon candidat, car par défaut il n'est ni sûr ni idempotent.

Cet ancien HTTP / 1.1, comme avec HTTP / 2?


HTTP / 2 a changĂ© la façon dont les requĂȘtes sont transportĂ©es entre les nƓuds, mais il n'a pas changĂ© leur signification lexicale. Par consĂ©quent, dans les attaques liĂ©es Ă  la valeur de la requĂȘte, HTTP / 2 se comporte de la mĂȘme maniĂšre. Mais les attaques de «transport» ne sont pas reproduites, car elles sont dĂ©jĂ  prises en compte dans la norme.

Les attaques sur le cache sont reproduites de maniĂšre similaire Ă  HTTP / 1, et la protection est similaire.

Les attaques Message Queuing ne s'appliquent pas Ă  HTTP / 2. Les messages HTTP qu'il contient sont divisĂ©s en trames distinctes, avec des en-tĂȘtes de trame distincts qui dĂ©terminent explicitement la longueur et la fin du message. Comme si l'attaquant ne changerait pas la mĂ©thode et ne modifierait pas les en-tĂȘtes HTTP, cela n'affecterait pas le cadre du message. Voler la rĂ©ponse Ă©chouera.

Les attaques contre la rĂ©pĂ©tition de messages non idempotents sont applicables mĂȘme en tenant compte du fait que dans HTTP / 2 il y amĂ©canisme de notification de la derniĂšre demande traitĂ©e . Dans HTTP / 2, plusieurs requĂȘtes sont multipliĂ©es dans le mĂȘme TCP et crĂ©ent ainsi des flux . Chaque fil a son propre numĂ©ro. Si le serveur HTTP / 2 se dĂ©connecte, il peut indiquer le numĂ©ro de la derniĂšre demande traitĂ©e dans GOAWAY. Les demandes avec un nombre plus Ă©levĂ© peuvent toujours ĂȘtre redirigĂ©es en toute sĂ©curitĂ©; les demandes avec un nombre infĂ©rieur ne sont redirigĂ©es que si elles sont idempotentes. Si une demande avec une mĂ©thode substituĂ©e semble idempotente pour un serveur proxy, le proxy la transmettra au serveur.

Comment remplacer en toute sécurité une méthode


La réponse courte n'est pas possible. Il vaut mieux ne pas utiliser du tout les substitutions de méthode. Et désactivez complÚtement la prise en charge dans le backend, le cas échéant. Bloquer les méthodes de substitution des clients HTTP. Refuser le proxy / WAF, ce qui coupe les méthodes "supplémentaires".

Si vous devez en quelque sorte vivre avec la redĂ©finition de la mĂ©thode, alors pour empĂȘcher suffisamment de modifications sur le backend. Tout d'abord, il est conseillĂ© de remplacer la mĂ©thode uniquement via le composant de requĂȘte de l'URI.

DeuxiĂšmement, il devrait y avoir une liste blanche de la transformation des mĂ©thodes: qui sont acceptables en tant que «transport» et qui en rĂ©sultent. Il ne devrait pas y avoir de fonctions de transformation gĂ©nĂ©ralisĂ©es lorsqu'une mĂ©thode peut ĂȘtre remplacĂ©e par n'importe laquelle. La mĂ©thode de «transport» ne devrait pas avoir les propriĂ©tĂ©s de sĂ©curitĂ© et d'idempotence si celle qui en rĂ©sulte n'en a pas. Les transformations dangereuses doivent ĂȘtre interdites, le mĂȘme remplacement GET -> HEAD.

Dois-je corriger un proxy / WAF problématique?


Si le proxy n'implĂ©mente que les mĂ©thodes GET et POST, et bloque les autres pour une raison ou une autre, certainement oui. Vous pouvez l'optimiser principalement pour GET et POST, mais bloquer d'autres mĂ©thodes est une mauvaise idĂ©e. Ce qui crĂ©e encore un gouffre de mĂ©fiance Ă  l'Ă©gard du produit: si les choses de base sont bloquĂ©es, Ă  quoi s'attendre de la mise en Ɠuvre de problĂšmes plus complexes?

Si vous vous inquiĂ©tez de la sĂ©curitĂ© des applications Web protĂ©gĂ©es, il peut ĂȘtre utile de sĂ©curiser les applications contre les stratĂ©gies de substitution de mĂ©thode non sĂ©curisĂ©es. Bien sĂ»r, dans le cas gĂ©nĂ©ral, sans connaĂźtre les dĂ©tails de la mise en Ɠuvre de l'application Web, il est impossible de protĂ©ger complĂštement l'application contre les remplacements incorrects, mais vous pouvez couvrir partiellement les utilisateurs qui ne connaissent tout simplement pas le problĂšme. Il est nĂ©cessaire non seulement de vous protĂ©ger contre l'empoisonnement de votre propre cache, mais Ă©galement de permettre d'activer ou de dĂ©sactiver la substitution pour chaque application protĂ©gĂ©e. Pour ce faire, gardez une trace des en- tĂȘtes couramment utilisĂ©s.X-HTTP-Method, X-HTTP-Method-Override et X-Method-Override. Le suivi de la redĂ©finition dans le composant de requĂȘte de l'URI n'a pas beaucoup de sens: le cache n'empoisonne pas une telle demande, et la requĂȘte peut ĂȘtre trĂšs longue et avoir un format complĂštement arbitraire.

?


Développeurs de sécurité, ne limitez pas les développeurs d'applications aux politiques de sécurité. Ils trouveront toujours comment les contourner, et plus le protocole est flexible, plus il est facile de le faire. Il est trÚs probable qu'ils ne vous frapperont pas et n'attendront pas que vous rendiez les restrictions plus raisonnables, mais les contournent simplement.

Si vous avez compris comment implĂ©menter quelque chose dans le protocole, mais qu'il remplace ou va Ă  l'encontre de l'un des concepts clĂ©s de la norme, des problĂšmes de compatibilitĂ© et de sĂ©curitĂ© se poseront sĂ»rement. Et ils doivent ĂȘtre couverts en mĂȘme temps que la dĂ©cision. À chaque fois. Si vous avez rencontrĂ© de tels conseils et n'avez pas vu d'avertissements de sĂ©curitĂ©, ne dupliquez pas les conseils sur Internet. Soyez toujours critique envers la dĂ©cision et dĂ©terminez ce qui pourrait mal tourner .

Au lieu d'une postface


Quels problÚmes de serveur proxy avez-vous rencontrés? Que fallait-il contourner et comment?

All Articles