Développer des composants métier coté serveur Flashcards

1
Q

Comment se défendre contre une faille XSS ?

A

Prévention XSS➡️

  1. React protège nativement contre les XSS en transformant les données utilisateur en texte brut sécurisé avant leur insertion dans le DOM.
  2. Remplacer innerHTML par textContent/innerText. Ces 2 propriétés insèrent du texte brut sans interpréter de code HTML ou JavaScript.
  3. Encoder les données avant insertion dans le DOM➡️
    Encodez les caractères spéciaux en entités HTML sécurisées, comme convertir < en < et > en >
    Cela permet d’éviter l’interprétation de caractères dangereux tels que <, >, “, et ‘.
  4. Valider les données pour vérifier si elle respecte les formats attendus➡️DOMPurify
  5. encodeURIComponent()➡️Encode 1 Chaine de caractère PR L’utiliser EN Toute Sécurité DS 1 URL
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Comment se défendre contre une faille CRSF ?

A
  1. Utiliser des jetons CSRF (CSRF Tokens) ➡️Des jetons uniques et temporaires à CHQ requête de l’utilisateur PR vérifier que la requête provient bien du site légitime➡️ID A CHQ Requete
  2. Cookies avec l’attribut “SameSite”➡️ Les cookies peuvent être configurés pour ne pas être envoyés lors de requêtes provenant d’autre site➡️PAS Encore Présent Partout
  3. Configurer un CORS strict➡️Configurez les règles CORS pour n’accepter les requêtes que depuis des sites de confiance.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

C’est quoi l’architecture MVC ?

A

L’architecture MVC est un modèle de conception qui divise une application en trois composants principaux pour séparer les responsabilités et faciliter la maintenance :

  1. Modèle➡️A=Fournit l’accès aux données
    B=Communique avec la base de données.
  2. Vue➡️A=Envoie des Données Formatées Au Client
    B=Responsable de l’affichage des données à l’utilisateur.
    C=Reçoit les données du modèle et les présente sous une forme visuelle (HTML, CSS…).
    D=Besoin D’Aucun Dossier Spécifique.
  3. Controlleur➡️A=Intermédiaire entre le Modèle et la Vue
    B=Récupére les requêtes du client (formulaire), puis appele le modèle
    C=Transmet les données reçues du Modèle à la Vue pour les présenter à l’utilisateur.
  4. Exemple MVC :
    A=L’utilisateur demande une page web (via HTTP GET OU POST).

B=Le Contrôleur reçoit la requête, interagit avec le Modèle pour obtenir des données.

C=Le Modèle renvoie les données au Contrôleur.

D=Le Contrôleur passe ces données à la Vue, qui génère la réponse visible par l’utilisateur (ex : une page HTML).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Dans le design pattern MVC, a-t’on un lien entre la partie M et la partie V ?

A

Dans le design pattern MVC, il n’y a pas de lien direct entre la partie Modèle (M) et la partie Vue (V). Toute interaction entre les deux passe par le Contrôleur (C), qui agit comme intermédiaire.
Cela irait contre la sépération des responsabilités.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Je souhaite retourner une réponse au client dans le cas où tout s’est bien passé. Quel status HTTP(s) je devrais utiliser ?

A

Quand une réponse au client c’est bien passé, on utilise un statut HTTP de la famille des 200 (succès).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Je souhaite retourner une réponse au client dans le cas où le serveur a rencontré une erreur. Quel status HTTP(s) je devrais utiliser ?

A

Dans le cas où le serveur a rencontré une erreur, vous devriez utiliser un statut HTTP de la famille des 500 (erreurs serveur).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Quel(s) intéret(s) y a-til de protéger les champs d’un formulaire côté backend (taille max d’un champ, complexité d’un password, …) étant donné qu’on peut faire toutes ces vérifications côté frontend (html/javascript) ?

A

Il ne faut jamais faire entièrement confiance aux données provenant du frontend. Les utilisateurs malveillant peuvent désactiver JavaScript ou manipuler les requêtes HTTP en utilisant des outils comme postman pour envoyer des données directement au serveur, contournant les validations frontend. Le backend doit agir comme un dernier rempart, notamment contre les injections SQL et le XSS.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Qu’est-ce qu’un test d’integration ?

A

Un test d’intégration est un type de test qui vérifie la bonne interaction entre plusieurs composants d’une application, afin de s’assurer qu’ils fonctionnent correctement ensemble.
Contrairement aux tests unitaires qui se concentrent sur des unités de code isolées, les tests d’intégration se concentrent sur la communication entre les composants.
EX :
1. Tester si un controlleur récupère bien l’ensemble des articles stockées dans la BDD.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Qu’est-ce qu’un test end to end ?

A

Un test end-to-end est un type de test qui vérifie le bon fonctionnement de l’application dans son intégralité, en simulant le parcours d’un utilisateur du début à la fin. Ce test englobe le frontend, le backend et la base de données, pour s’assurer que toutes les parties de l’application fonctionnent correctement ensemble.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Connaissez vous des outils permettant de contrôler la qualité du code que vous produisez ? En quoi ces outils sont particulièrement efficaces dans le cadre d’un travail en équipe ?

A

Outils pour contrôler la qualité du code :

  1. Eslint. Detecter les erreurs et les mauvaises pratiques dans le code.
  2. Prettier. Formate le code pour garantir un style cohérent, en évitant les débats sur l’apparence du code au sein d’une équipe.
    EX : A=Prettier ajoute des espaces pour rendre le code plus lisible.
    B= Les longues instructions sont automatiquement réorganisées pour être plus lisibles.

Pourquoi ces outils sont efficaces en travail d’équipe :

Standardisation du code :
Ils garantissent un style et des pratiques de code uniformes, facilitant la lecture et la compréhension du code par tous les membres de l’équipe.

Réduction des erreurs humaines :
Ils détectent automatiquement des problèmes.

Gain de temps :
Évite les débats inutiles en revue de code sur des questions de style ou de syntaxe, et permet de se concentrer sur le code.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

C’est quoi un paradigme de programmation ?
Pouvez vous en lister 2 ?

A

Un paradigme de programmation est une approche de programation qui guide la manière dont les développeurs conçoivent, organisent et structurent leur code en fonction de principes et concepts spécifiques.

La programmation orientée objet (POO) est un paradigme qui organise le code autour de classes, comme une classe Voiture avec des attributs tels que marque et couleur, et des méthodes comme démarrer() ou accélérer(), permettant de structurer le code pour modéliser des objets du monde réel.
Exemples de langages : JavaScript, Java…

Dans la programmation événementielle, les événements, comme un clic sur un bouton, déclenchent des réactions spécifiques.
EX GEN : addEventListener()
Exemples de langages : JavaScript, Python…

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Utilité de la POO ?

A
  1. Modularité et réutilisabilité du code :

La POO permet de diviser le code en classes et objets, rendant chaque partie réutilisable dans d’autres projets ou contextes.
Exemple : Une classe Voiture peut être réutilisée dans plusieurs applications.

  1. Facilité de maintenance :

Grâce à l’encapsulation, chaque objet est indépendant, ce qui rend le code plus facile à modifier sans impacter d’autres parties.

  1. Extension et évolution du logiciel :

Avec l’héritage, il est simple d’ajouter de nouvelles fonctionnalités en créant des sous-classes basées sur des classes existantes.
Exemple : Une classe Voiture peut être étendue en une classe VoitureÉlectrique pour ajouter des propriétés spécifiques.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

En POO, quelle est la différence entre une classe et un objet ?

A

Une classe est un concept ou un plan général (Voiture).
Un objet est une entité spécifique créée à partir de ce concept
(Une Toyota rouge ou une Renault bleue).

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Pouvez vous expliquer dans les grandes lignes comment fonctionne le système d’héritage en POO ?

A

A=Réutiliser une Class➡️Créer des NV Classes sur des Classes Existantes.
B=LA Classe Enfant Hérite des Propriétés DE LA Classe Parent
C=LA Classe Enfant Peut avoir de Nouvelles Propriétés ET Changer les Propriétes DU Parent

Une classe parent “Animal” avec des propriétés comme “nombre de pattes” et une méthode “se déplacer”. Une classe enfant “Oiseau” héritera de ces propriétés, mais pourra ajouter une nouvelle propriété comme “peut voler” et modifier la méthode “se déplacer” pour refléter qu’il vole au lieu de marcher.

L’héritage en POO permet à une classe d’utiliser les caractéristiques d’une autre classe, ce qui évite de réécrire du code déjà existant.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

C’est quoi les CORS ?

A

Les CORS contrôle quels sites peuvent échanger des données entre eux pour des raisons de sécurité.

Les CORS (Cross-Origin Resource Sharing) sont un mécanisme de sécurité basé sur des en-têtes HTTP conçu pour contrôler l’accès au serveur selon l’origine des requêtes. Les CORS permet à un serveur de restreindre ou d’autoriser l’accès à ses données à une liste de domaines explicitement autorisés. En l’absence d’une configuration adéquate des CORS, les requêtes provenant d’une origine différente de celle du serveur seront bloquées par défaut par les navigateurs, pour des raisons de sécurité.

Exemple :
Un site web hébergé sur http://site1.com veut accéder à une API située sur http://api2.com. Par défaut, cette requête serait bloquée par le navigateur. Si le serveur de http://api2.com envoie l’en-tête suivant dans sa réponse :

Access-Control-Allow-Origin: http://site1.com
Le navigateur autorise la requête, et le site peut utiliser les données de l’API.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Faut il hasher systématiquement tout mot de passe en base de données ?

A

Oui, il est impératif de hasher systématiquement tous les mots de passe stockés dans une base de données.

  1. Beaucoup d’utilisateurs utilisent le même mot de passe sur plusieurs sites webs. Si un mot de passe haché fuite, les dégâts potentiels sont limités par rapport à un mot de passe en clair.
  2. En cas de fuite de données, si la base de données est compromise, les mots de passe en texte clair permettraient aux attaquants d’accéder directement aux comptes utilisateurs.
17
Q

Qu’est ce qu’un jeu d’essai ?

A

Un jeu d’essai est un ensemble de données conçu pour tester et valider le fonctionnement d’une fonctionalité. Ces données permettent de vérifier si la fonctionalité répond correctement aux attentes avec des cas normaux ou des cas extrêmes.

Les données en entrée = L’action utilisateur sur l’application
Les données attendues = Comment l’application est censée réagir à cette action utilisateur
Les données obtenues = Comment l’application réagit réellement

Le jeu d’essai permet de comparer les données attendues et les données obtenues pour identifier d’éventuels écarts.

18
Q

Différence API REST et GraphQL ?

A

REST : Utilise plusieurs endpoints et retourne des réponses fixes, simple mais parfois inefficace pour les relations complexes.

GraphQL : Centralise toutes les requêtes sur un seul endpoint, offre une flexibilité et une précision supérieures, mais demande plus de configuration.

19
Q

C’est quoi un endpoint ?

A

Un endpoint est une URL spécifique d’une API qui représente un point d’accès à une fonctionnalité.

GET /posts : Récupérer la liste de tous les articles.
GET /posts/{id} : Récupérer un article spécifique par son ID.
POST /posts : Créer un nouvel article (avec les données envoyées dans le corps de la requête).
PUT /posts/{id} : Mettre à jour un article existant.
DELETE /posts/{id} : Supprimer un article.

20
Q

C’est quoi un middleware sur Express ?

A

Un middleware dans Express.js est une fonction intermédiare entre les requêtes HTTP (req) et la réponse final (res). Il peut modifier le req et le res, arrêter, filtrer ou valider les requêtes ou encore passer la requête à un autre middleware avec la fonction next ().

21
Q

C’est quoi la RGPD ?

A

La RGPD (Règlement Général sur la Protection des Données) est une loi européenne qui régule la collecte, l’utilisation et la protection des données personnelles des utilisateurs.