web-dev-qa-db-fra.com

Un cookie sécurisé sans l'indicateur HttpOnly est-il un problème?

Je comprends que les cookies avec le drapeau sécurisé doivent être transmis via une connexion HTTPS. Cela signifie également que ces cookies doivent être protégés contre les adversaires (cookie privé). Par conséquent, il est important de définir l'indicateur HttpOnly sur ce type de cookie privé pour empêcher XSS.

Un cookie privé avec l'indicateur sécurisé mais aucun indicateur HttpOnly n'est-il un problème?

Essentiellement, je pense que le drapeau HttpOnly devrait être ajouté à un cookie avec le drapeau sécurisé.

19
HyunJae Nam

Le drapeau secure garantit que la configuration et la transmission d'un cookie ne se font que de manière sécurisée (c'est-à-dire https). S'il existe une option pour http, un indicateur sécurisé devrait empêcher la transmission de ce cookie. Par conséquent, un indicateur sécurisé manquant devient un problème s'il existe une option à utiliser ou à revenir à http.

httpOnly garantit que les langages de script (ie. javascript) ne pourront pas obtenir la valeur du cookie (comme via document.cookie). La seule façon de l'obtenir est d'utiliser les en-têtes de demande et de réponse http. Par conséquent, un httpOnly manquant couplé à une vulnérabilité XSS est une recette pour un jeton de session volé.

Il est préférable de mettre httpOnly et un indicateur sécurisé pour votre jeton de session. Pour les autres cookies, cela dépend de leur sensibilité et de leur utilisation.

25
Link

Ces deux indicateurs atténuent deux vecteurs d'attaque complètement différents.

  • HttpOnly - atténue les attaques de script intersite réussies.
  • Sécurisé - atténue les attaques Man-In-The-Middle.

L'un sans l'autre signifie que vous avez seulement atténué ce vecteur particulier. Autrement dit, cela dépend des menaces contre lesquelles vous vous défendez. HttpOnly est toujours utile même si Secure n'est pas défini, car un Man-In-The-Middle doit également être placé de manière appropriée - par exemple, sur le réseau local. Un attaquant de script intersite pourrait être localisé n'importe où sur Internet, il est donc toujours utile de l'atténuer en soi.

Il convient de noter que ces drapeaux ne devraient être que des mesures de "défense en profondeur". Je recommanderais HSTS au-dessus de l'indicateur sécurisé et une politique de sécurité du contenu stricte avec un encodage de sortie approprié sur les indicateurs HttpOnly tous les jours, cependant si votre système est déjà construit, les ajouter plus tard peut être prohibitif.

18
SilverlightFox

HTTPonly L'indicateur de cookie agit comme un contrôle de sécurité pour les cookies de session car il empêche les scripts côté client d'accéder à la valeur du cookie. Ceci est efficace dans le cas où un attaquant parvient à injecter des scripts malveillants dans une page HTML légitime. Le drapeau HTTPonly empêchera le script malveillant d'accéder au cookie de session, empêchant ainsi détournement de session .

Notez que cet indicateur ne réduit que le risque à un certain niveau et s'il y a une vulnérabilité d'injection de script présente, elle peut toujours être exploitée de plusieurs manières comme discuté ici

3
Shurmajee

Le drapeau "httponly" empêche d'accéder à ce cookie via des scripts côté client (JS, TS) sur le navigateur. Si vous avez une vulnérabilité XSS sur votre page, l'attaquant ne pourra pas accéder à la variable "document.cookie".

Donc, répondre à votre question - Oui. Cela peut être un problème.

Les pages protégées par SSL ne protègent pas contre d'éventuelles attaques XSS et permettent à l'attaquant d'obtenir ce type de cookie.

1
Bartosz Rosa