🛡️ 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