Apprenez à sécuriser vos dépendances et à vérifier l'intégrité des packages.
{
"dependencies": {
"express": "4.17.1"
},
"scripts": {
"preinstall": "npm install",
"prepare": "husky install"
}
}
{
"dependencies": {
"express": "4.17.1"
},
"scripts": {
"preinstall": "npm ci && npm audit",
"prepare": "husky install"
}
}
Sécurisez la désérialisation des données non fiables.
// Code vulnérable
const user = JSON.parse(userInput);
processUser(user);
// 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);
}
Sécurisez votre pipeline de déploiement avec des signatures et des vérifications.
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
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/*'
Sélectionnez les bonnes options pour sécuriser votre pipeline CI/CD.
Voici le pipeline que vous avez construit :