IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

React Discussion :

Authentification dans React : schéma général


Sujet :

React

  1. #1
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2023
    Messages : 30
    Points : 17
    Points
    17
    Par défaut Authentification dans React : schéma général
    Bonjour,
    J'ai lu à plusieurs reprises qu'il fallait se méfier du JS du point de vue sécurité puisqu'on pouvait modifier les variables dans son navigateurs en cours d'exécution. Je ne sais pas si j'ai bien compris car je n'ai pas réussi à faire cela (sans avoir beaucoup cherché non plus).
    Toujours est-il que je suis en train d'implémenter l'authentification (via keycloak, mais je pense que ce n'est pas important) dans une application React et je vois souvent dans le code proposé sur internet qu'on se base sur un booléen ("authenticated") pour savoir si l'utilisateur est bien authentifié et lui permettre d'accéder à des ressources. Si l'utilisateur peut modifier les variables JS facilement, comment cette façon de faire peut-elle être sûre ??

    Voici un exemple de ce que j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    keycloak.init({ onLoad: 'login-required' }).then(authenticated => {
          setKeycloak(keycloak)
          setAuthenticated(authenticated) // on a défini un useState contenant authenticated et on met à jour après connexion
    // NB : Si je demande l'affichage de authenticated dans la console, j'obtiens true : c'est un simple booléen en apparence
     
    ...
     
    })
     
     
    ...
     
    // Plus loin dans le code ou dans un autre composant :
     
    if (keycloak) {
      if (authenticated) return (
        // Du code valide pour un utilisateur authentifié...
      )
    Pourriez-vous éclairer ma lanterne et me dire ce que j'ai mal compris :-) ?

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 366
    Points : 15 717
    Points
    15 717
    Par défaut
    plus d'un an après, vous avez peut-être trouvé votre réponse mais ça aidera d'autres lecteurs qui passent par là.

    dans les communications client serveur, n'importe quel client peut envoyer des requêtes au serveur. cela peut être le navigateur avec les outils de développement ou même un client que vous programmez vous même.
    c'est pour ça que le code côté serveur doit tenir compte de cela et vérifier toutes les données qu'il reçoit.

    pour ce que vous nous montrez, il s'agit juste d'une information passée dans le code pour savoir ce que l'application doit afficher.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2023
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2023
    Messages : 30
    Points : 17
    Points
    17
    Par défaut
    Bonjour,

    Non, hélas je n'ai pas de réponse. En effet, tout est dit : le navigateur n'est pas "sûr" pour du JS. Il faut tout vérifier côté backend, ce qui pose problème quand on n'y a pas accès et que ceux qui y ont accès sont rétifs à la manœuvre (oui, je sais, c'est absurde mais c'est ainsi).

    Je dirais qu'on est en plein dans les inconvénients du SSR. On peut contourner ça en changeant de technologie (par exemple PHP) qui va générer la page adéquate avant de l'envoyer, mais on perd le côté SPA...

    La (ou au moins une) solution serait d'utiliser un autre framework (en plus de React dans mon cas) comme Next, qui permet d'ajouter des fonctionnalités côté backend (ou middleware).

    Voilà en tout cas ce que j'ai compris de la chose après plusieurs mois. Mais de toute façon, actuellement je suis en train de tester du no/low-code, donc ces questions sont un peu loin de moi...

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 366
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 366
    Points : 15 717
    Points
    15 717
    Par défaut
    Citation Envoyé par alt184 Voir le message
    que ceux qui y ont accès sont rétifs à la manœuvre
    s'ils sont responsables du code côté serveur, c'est aussi de leur responsabilité de combler les trous de sécurité. du moment que vous les avez prévenus, vous avez fait votre part du travail.
    éventuellement, si vous êtes dans une entreprise procédurière, envoyez leur un e-mail pour garder une trace écrite.

Discussions similaires

  1. Réponses: 0
    Dernier message: 14/04/2023, 14h23
  2. [PEAR][DB] Appel de procédure stockée dans différents schémas sous postgresql
    Par rebolon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/09/2006, 16h49
  3. Savoir s'il existe un champ dans un schéma définit ?
    Par shadeoner dans le forum Requêtes
    Réponses: 4
    Dernier message: 10/04/2006, 10h39
  4. Programmation dans un schéma ou Dtd
    Par viscere dans le forum Valider
    Réponses: 6
    Dernier message: 06/04/2006, 13h45
  5. Réponses: 3
    Dernier message: 15/09/2004, 15h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo