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

JavaScript Discussion :

[S�curit�] web c�t� client - JS, Angular, Firebase, Rxjs


Sujet :

JavaScript

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Octobre 2018
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Octobre 2018
    Messages : 14
    Par d�faut [S�curit�] web c�t� client - JS, Angular, Firebase, Rxjs
    Bonjour,

    Je suis un peu perdu avec toutes les versions diff�rentes que j'entends concernant des questions que je me pose sur la s�curit� web.

    D�j�, je sais qu'on peut jouer avec la console pour modifier l'affichage client, HTML/CSS, je sais �galement qu'on peut appeler des requ�tes webservice quant on le souhaite, faire des injections sql avec les inputs...

    Les questions que je me pose encore:

    → Peut-on modifier un script JS c�t� client ? Peut-on ex�cuter des fonctions lorsqu'on le souhaite ?

    Exemple: Imaginons la fonction suivante dans mon service Angular:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    setCharacter(playerId: string, character: string){
        firebase.database().ref("characters").child(`${playerId}/character`).update(character);
    }
    → Est-ce que l'utilisateur pourrait changer la valeur d'un param�tre ? Et du coup est-ce que l'utilisateur pourrait l'ex�cuter la lancer lui-m�me (en manipulant la console ou je ne sais quoi) ?

    → Si tout �a est possible quel est l'int�r�t d'utiliser rxjs pour faire des updates, exemple:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    saveBooks() {
        firebase.database().ref('/books').set(this.books);
    }
    On pourrait modifier this.books et donc enregistrer n'importe quoi ?


    Un ami me dit que l'utilisateur peut absolument tout faire c�t� client et un autre me dit qu'il n'est pas possible d'aller jusque l�, donc je suis confus. Mon objectif est d'avoir conscience de ce qui est possible de faire c�t� client et donc de bien g�rer ma s�curit� !

    Si quelqu'un pouvait me remettre les id�es au claire, je lui serai �ternellement reconnaissant
    Merci d'avance !

  2. #2
    Membre extr�mement actif Avatar de psychadelic
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    2 532
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 2 532
    Par d�faut
    Citation Envoy� par Cursed Voir le message
    Un ami me dit que l'utilisateur peut absolument tout faire c�t� client et un autre me dit qu'il n'est pas possible d'aller jusque l�, donc je suis confus. Mon objectif est d'avoir conscience de ce qui est possible de faire c�t� client et donc de bien g�rer ma s�curit� !
    oui, un internaute peut "tout faire" cot� client, mais uniquement "cot� client" (pas "cot� serveur" )

    un site Internet, c'est un systeme fonctionnant en mode Clients / Serveurs.

    Quand un internaute se "branche" sur site X, ou Y, c'est un serveur qui lui r�pond.
    La r�ponse du Serveur c'est une page internet qui contient du HTML, du CSS, du JavaScript.

    Cette page est juste une copie temporaire de ce que le serveur veut bien donner.
    C'est une copie.
    sur cette copie l'internaute peut faire ce qu'il veut
    changer la pr�sentation CSS au travers d'outils ou directement avec le d�boggeur du navigateur, idem pour le code JavaScript.
    Tout �a ne peut se passer que cot� client et sur la copie. pas sur le serveur.

  3. #3
    Expert confirm�
    Avatar de Marco46
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2005
    Messages
    4 419
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 4 419
    Par d�faut
    faire des injections sql avec les inputs
    Normalement non. C�t� serveur il doit y avoir un contr�le pour emp�cher les injections. Les requ�tes SQL sont constitu�es par le serveur pas par le client qui ne fait que transmettre des param�tres.

    Et du coup est-ce que l'utilisateur pourrait l'ex�cuter la lancer lui-m�me (en manipulant la console ou je ne sais quoi) ?
    Firebase abstrait la partie service http. Tu ne manipules pas directement la base de donn�es m�me si tu manipules un objet nomm� database. Ca passe sur http tu n'es pas connect� directement � une base de donn�es.

    Si tout �a est possible quel est l'int�r�t d'utiliser rxjs
    RxJs ne sert pas � manipuler une base de donn�es �a sert � g�rer l'asynchronisme de ton appli front (les I/O).

    On pourrait modifier this.books et donc enregistrer n'importe quoi ?
    Je ne connais pas tr�s bien firebase mais j'imagine qu'il est possible dans la config de la "firebase" d'instaurer des contr�les d'int�grit� des donn�es comme tu le ferais avec une stack classique.

    Un ami me dit que l'utilisateur peut absolument tout faire c�t� client
    Oui cet ami a raison. L'inverse n'aurait aucun sens. Tu ne peux pas emp�cher (r�ellement) un utilisateur de faire ce qu'il veut sur une machine dont il est administrateur. Les contr�les � la saisie c�t� browser ne sont qu'une aide � la saisie rien de plus.

    un autre me dit qu'il n'est pas possible d'aller jusque l�, donc je suis confus. Mon objectif est d'avoir conscience de ce qui est possible de faire c�t� client et donc de bien g�rer ma s�curit� !
    La s�curit� se g�re c�t� serveur. Il y a quelques �l�ments dont il faut tenir compte c�t� client n�anmoins pour emp�cher le cross site scripting (en gros un utilisateur qui ferait une saisie qui appara�trait ensuite sur le site et qui permettrait d'injecter du code JavaScript de sa main). Beaucoup plus de d�tails ici (mais probablement un peu hard pour d�marrer).

  4. #4
    Membre averti
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Octobre 2018
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Octobre 2018
    Messages : 14
    Par d�faut
    Merci pour ces premiers retours.

    Je sais bien-s�r que la s�curit� doit se g�rer c�t� serveur, ce qui me perturbe je pense c'est l'utilisation de firebase qui se fait c�t� client.

    Je ne connais pas tr�s bien firebase mais j'imagine qu'il est possible dans la config de la "firebase" d'instaurer des contr�les d'int�grit� des donn�es comme tu le ferais avec une stack classique.
    Effectivement, il y a les rules au format JSON qui permettent de g�rer une partie de la s�curit�, �a me semble limit� (j'ai pas l'impression que �a remplace un code complet c�t� serveur comme on peut le faire avec les cloud functions) mais je crois qu'il faut se d�merder avec �a.

    Il y a quelques �l�ments dont il faut tenir compte c�t� client n�anmoins pour emp�cher le cross site scripting (en gros un utilisateur qui ferait une saisie qui appara�trait ensuite sur le site et qui permettrait d'injecter du code JavaScript de sa main).
    Oui j'ai aussi connaissance du XSS si c'est bien de �a dont tu parles mais avec Angular je ne devrais pas avoir ce soucis �tant donn� que le routing est bien g�r�.

    Firebase abstrait la partie service http. Tu ne manipules pas directement la base de donn�es m�me si tu manipules un objet nomm� database. Ca passe sur http tu n'es pas connect� directement � une base de donn�es.
    Mais on pourrait tr�s bien faire ce qu'on veut si c�t� client on a le libre acc�s et si c�t� serveur il n'y a pas de rules du coup ? Du genre firebase.database().ref('..').set(...) pour modifier par exemple ou .once('value') pour de la lecture ce serait faisable ?

  5. #5
    Membre Expert
    Avatar de Doksuri
    Profil pro
    D�veloppeur Web
    Inscrit en
    Juin 2006
    Messages
    2 495
    D�tails du profil
    Informations personnelles :
    �ge : 55
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 495
    Par d�faut
    regle #1 : ne jamais faire confiance aux donnees recues par le client.

    pour moi, le JS c'est de la cosmetique. toute la securite et traitement des donnes doit se faire cote serveur
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de D�veloppez !

  6. #6
    Expert confirm�
    Avatar de Marco46
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Ao�t 2005
    Messages
    4 419
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 44
    Localisation : France, Paris (�le de France)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 4 419
    Par d�faut
    Citation Envoy� par Cursed Voir le message
    Mais on pourrait tr�s bien faire ce qu'on veut si c�t� client on a le libre acc�s et si c�t� serveur il n'y a pas de rules du coup ? Du genre firebase.database().ref('..').set(...) pour modifier par exemple ou .once('value') pour de la lecture ce serait faisable ?
    Si il n'y a pas de contr�les c�t� serveur et que le client est authentifi� oui le client peut faire ce qu'il veut. Avec le token de connexion l'utilisateur n'a m�me pas besoin de modifier ton appli front il lui suffit d'utiliser un outil de type Postman ou curl pour taper sur ton backend. C'est parfaitement normal.

    Comme le dit Doksuri : regle #1 : ne jamais faire confiance aux donnees recues par le client.

  7. #7
    Membre averti
    Homme Profil pro
    D�veloppeur Java
    Inscrit en
    Octobre 2018
    Messages
    14
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur Java

    Informations forums :
    Inscription : Octobre 2018
    Messages : 14
    Par d�faut
    Je ne peux �tre que d'accord avec cette r�gle !

    J'avais essay� de jouer avec Postman + console justement pour tester les failles, pas de soucis pour appeler les fonctions http qui se trouvent c�t� serveur (cloud functions) mais je n'avais pas r�ussi � ex�cuter les fonctions qui se trouvent c�t� client firebase.database()... C'est pour �a que je voulais avoir des confirmations sur mes doutes !

    Quoi qu'il en soit je vous remercie, j'ai mes r�ponses. Sur ce, je m'en vais b�tonner mes rules !

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 6
    Dernier message: 21/04/2009, 10h03
  2. Probl�me pour d�finir un web service client
    Par GRicco dans le forum NetBeans
    R�ponses: 5
    Dernier message: 10/04/2007, 09h54
  3. Web service client
    Par lorincet dans le forum NetBeans
    R�ponses: 1
    Dernier message: 17/07/2006, 18h15
  4. R�ponses: 0
    Dernier message: 15/06/2006, 07h41
  5. Web contre client/serveur que choisir??
    Par silvermoon dans le forum D�bats sur le d�veloppement - Le Best Of
    R�ponses: 41
    Dernier message: 24/01/2004, 15h53

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