Intégrité des Données et Logiciels

# 🛡️ Intégrité des Données et Logiciels

## Étape 1: Vérification des Dépendances

Apprenez à sécuriser vos dépendances et à vérifier l'intégrité des packages.

### Code Vulnérable :

    {
      "dependencies": {
        "express": "4.17.1"
      },
      "scripts": {
        "preinstall": "npm install",
        "prepare": "husky install"
      }
    }

### Code Sécurisé :

    {
      "dependencies": {
        "express": "4.17.1"
      },
      "scripts": {
        "preinstall": "npm ci && npm audit",
        "prepare": "husky install"
      }
    }

## Étape 2: Validation des Données Sérialisées

Sécurisez la désérialisation des données non fiables.

### Code Vulnérable :

    // Code vulnérable
    const user = JSON.parse(userInput);
    processUser(user);

### Code Sécurisé :

    // Code sécurisé
    import Joi from 'joi';

    const schema = Joi.object({
        name: Joi.string().required(),
        age: Joi.number().integer().min(0).max(120)
    });

    try {
        const user = JSON.parse(userInput);
        const { error, value } = schema.validate(user);
        if (error) throw new Error("Invalid data");
        processUser(value);
    } catch (err) {
        console.error("Validation failed:", err);
    }

## Étape 3: Intégrité du Pipeline CI/CD

Sécurisez votre pipeline de déploiement avec des signatures et des vérifications.

### Code Vulnérable :

    name: CI/CD Pipeline
    on:
      push:
        branches: [ main ]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v2
          - name: Install Dependencies
            run: npm install
          - name: Deploy
            run: |
              npm run build
              scp -r ./dist user@192.168.1.100:/var/www

### Code Sécurisé :

    name: CI/CD Pipeline
    on:
      push:
        branches: [ main ]
    jobs:
      build:
        runs-on: ubuntu-latest
        steps:
          - uses: actions/checkout@v3
          - name: Verify dependencies
            run: |
              npm ci
              npm audit
          - name: Build and sign
            run: |
              npm run build
              gpg --import ${{ secrets.GPG_PRIVATE_KEY }}
              find dist -type f -print0 | xargs -0 gpg --detach-sign --armor
          - name: Deploy
            env:
              SSH_KEY: ${{ secrets.SERVER_SSH_KEY }}
            run: |
              mkdir ~/.ssh && echo "$SSH_KEY" > ~/.ssh/id_rsa && chmod 600 ~/.ssh/id_rsa
              rsync -avz -e "ssh -i $SSH_KEY" dist/ user@secure-server:/var/www
          - name: Verify deployment
            run: ssh user@secure-server 'gpg --verify /var/www/dist/*'

## Étape 4: Construisez un Pipeline CI/CD Sécurisé

Sélectionnez les bonnes options pour sécuriser votre pipeline CI/CD.

### 1. Comment cloner le dépôt ?

### 2. Comment installer les dépendances ?

### 3. Vérifiez les vulnérabilités

### 4. Méthode de déploiement

## Pipeline Généré

Voici le pipeline que vous avez construit :

## Résumé de la Validation