1:"$Sreact.fragment" 2:I[70119,["/_next/static/chunks/31d43793a1cb3f9f.js"],"default"] 3:I[39756,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"default"] 4:I[37457,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"default"] e:I[68027,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"default"] :HL["/_next/static/chunks/72b91a557eccd659.css","style"] 0:{"P":null,"b":"3j51AZN_4-ufz6TRQsmjK","c":["","blog","securite-web-2024"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":["securite-web-2024",{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/72b91a557eccd659.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/31d43793a1cb3f9f.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"fr","children":["$","body",null,{"className":"flex min-h-screen flex-col antialiased","children":[["$","$L2",null,{}],["$","main",null,{"className":"mx-auto w-full max-w-6xl flex-grow content-container my-6 p-8","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}],["$","footer",null,{"className":"w-full bg-gray-900/95 backdrop-blur-md text-gray-300 py-12 mt-6","children":["$","div",null,{"className":"max-w-6xl mx-auto px-6","children":[["$","div",null,{"className":"grid md:grid-cols-4 gap-8","children":[["$","div",null,{"children":[["$","h3",null,{"className":"text-2xl font-bold text-white mb-4","children":"Tuxyo"}],["$","p",null,{"className":"text-gray-400 mb-4","children":"Des solutions adaptées pour faire grandir votre entreprise"}],["$","div",null,{"className":"flex space-x-4","children":[["$","a",null,{"href":"#","className":"text-gray-400 hover:text-white transition","children":["$","svg",null,{"className":"w-5 h-5","fill":"currentColor","viewBox":"0 0 24 24","children":["$","path",null,{"d":"M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"}]}]}],["$","a",null,{"href":"#","className":"text-gray-400 hover:text-white transition","children":["$","svg",null,{"className":"w-5 h-5","fill":"currentColor","viewBox":"0 0 24 24","children":["$","path",null,{"d":"M22.46 6c-.77.35-1.6.58-2.46.69.88-.53 1.56-1.37 1.88-2.38-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29 0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15 0 1.49.75 2.81 1.91 3.56-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.22 4.22 0 0 1-1.93.07 4.28 4.28 0 0 0 4 2.98 8.521 8.521 0 0 1-5.33 1.84c-.34 0-.68-.02-1.02-.06C3.44 20.29 5.7 21 8.12 21 16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56.84-.6 1.56-1.36 2.14-2.23z"}]}]}],["$","a",null,{"href":"#","className":"text-gray-400 hover:text-white transition","children":["$","svg",null,{"className":"w-5 h-5","fill":"currentColor","viewBox":"0 0 24 24","children":"$L5"}]}]]}]]}],"$L6","$L7","$L8"]}],"$L9"]}]}]]}]}]]}],{"children":["$La",{"children":["$Lb",{"children":["$Lc",{},null,false,false]},null,false,false]},null,false,false]},null,false,false],"$Ld",false]],"m":"$undefined","G":["$e",[]],"s":false,"S":true} f:I[22016,["/_next/static/chunks/31d43793a1cb3f9f.js"],""] 3c:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"ViewportBoundary"] 3e:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"MetadataBoundary"] 3f:"$Sreact.suspense" 5:["$","path",null,{"d":"M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z"}] 6:["$","div",null,{"children":[["$","h4",null,{"className":"font-semibold text-white mb-4","children":"Services"}],["$","ul",null,{"className":"space-y-2 text-sm","children":[["$","li",null,{"children":["$","a",null,{"href":"/services","className":"hover:text-white transition","children":"Développement web"}]}],["$","li",null,{"children":["$","a",null,{"href":"/services","className":"hover:text-white transition","children":"Solutions SaaS"}]}],["$","li",null,{"children":["$","a",null,{"href":"/services","className":"hover:text-white transition","children":"Conseil & Formation"}]}]]}]]}] 7:["$","div",null,{"children":[["$","h4",null,{"className":"font-semibold text-white mb-4","children":"Entreprise"}],["$","ul",null,{"className":"space-y-2 text-sm","children":[["$","li",null,{"children":["$","a",null,{"href":"/about","className":"hover:text-white transition","children":"À propos"}]}],["$","li",null,{"children":["$","a",null,{"href":"/blog","className":"hover:text-white transition","children":"Blog"}]}],["$","li",null,{"children":["$","a",null,{"href":"/contact","className":"hover:text-white transition","children":"Contact"}]}]]}]]}] 8:["$","div",null,{"children":[["$","h4",null,{"className":"font-semibold text-white mb-4","children":"Contact"}],["$","ul",null,{"className":"space-y-2 text-sm","children":["$","li",null,{"className":"flex items-center","children":[["$","svg",null,{"className":"w-4 h-4 mr-2","fill":"none","stroke":"currentColor","viewBox":"0 0 24 24","children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","strokeWidth":2,"d":"M3 8l7.89 4.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"}]}],"contact@tuxyo.com"]}]}]]}] 9:["$","div",null,{"className":"border-t border-gray-800 mt-8 pt-8 text-center text-sm text-gray-400","children":["$","p",null,{"children":["© 2001-",2026," Tuxyo. Tous droits réservés. Version ","0.7.2505"]}]}] a:["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}] b:["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}] c:["$","$1","c",{"children":[["$","article",null,{"className":"max-w-4xl mx-auto","children":[["$","nav",null,{"className":"mb-8","children":["$","div",null,{"className":"flex items-center space-x-2 text-sm text-gray-600","children":[["$","$Lf",null,{"href":"/","className":"hover:text-tuxyoBlue","children":"Accueil"}],["$","span",null,{"children":"/"}],["$","$Lf",null,{"href":"/blog","className":"hover:text-tuxyoBlue","children":"Blog"}],["$","span",null,{"children":"/"}],["$","span",null,{"className":"text-gray-900","children":"Sécurité web 2024"}]]}]}],["$","header",null,{"className":"mb-12","children":[["$","div",null,{"className":"flex items-center space-x-4 mb-6","children":[["$","span",null,{"className":"px-3 py-1 bg-red-100 text-red-700 text-sm font-medium rounded-full","children":"Sécurité"}],["$","div",null,{"className":"flex items-center text-gray-500 text-sm","children":[["$","svg",null,{"className":"w-4 h-4 mr-1","fill":"none","stroke":"currentColor","viewBox":"0 0 24 24","children":["$","path",null,{"strokeLinecap":"round","strokeLinejoin":"round","strokeWidth":2,"d":"M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"}]}],"6 min de lecture"]}],["$","span",null,{"className":"text-gray-500 text-sm","children":"22 Février 2024"}]]}],["$","h1",null,{"className":"text-4xl md:text-5xl font-bold text-gray-900 mb-6 leading-tight","children":"Sécurité web : Les fondamentaux à connaître en 2024"}],["$","p",null,{"className":"text-xl text-gray-600 leading-relaxed","children":"Protégez votre site et vos utilisateurs avec ces pratiques de sécurité essentielles et découvrez les nouvelles menaces à surveiller cette année."}]]}],["$","div",null,{"className":"prose prose-lg max-w-none","children":[["$","h2",null,{"children":"L'importance de la sécurité web en 2024"}],["$","p",null,{"children":"Avec l'augmentation des cyberattaques et l'évolution constante des menaces, la sécurité web n'a jamais été aussi critique. En 2024, protéger votre site web et les données de vos utilisateurs doit être une priorité absolue."}],["$","h2",null,{"children":"Les principales menaces en 2024"}],["$","h3",null,{"children":"1. Attaques par injection SQL"}],["$","p",null,{"children":"Toujours d'actualité, ces attaques exploitent les failles dans la validation des entrées utilisateur."}],["$","h4",null,{"children":"Prévention"}],["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"// Mauvais exemple (vulnérable)\nconst query = `SELECT * FROM users WHERE id = ${userId}`;\n\n// Bon exemple (sécurisé avec requête préparée)\nconst query = 'SELECT * FROM users WHERE id = ?';\ndb.prepare(query).get(userId);"}]}],["$","h3",null,{"children":"2. Cross-Site Scripting (XSS)"}],["$","p",null,{"children":"Injection de scripts malveillants dans les pages web visitées par d'autres utilisateurs."}],["$","h4",null,{"children":"Protection contre XSS"}],["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"// React - échappement automatique\nfunction UserComment({ comment }) {\n return
{comment}
; // Sécurisé par défaut\n}\n\n// HTML - utiliser des fonctions d'échappement\nfunction escapeHtml(text) {\n const div = document.createElement('div');\n div.textContent = text;\n return div.innerHTML;\n}"}]}],["$","h3",null,{"children":"3. Cross-Site Request Forgery (CSRF)"}],["$","p",null,{"children":"Attaques qui forcent un utilisateur authentifié à exécuter des actions non désirées."}],["$","h4",null,{"children":"Implémentation de tokens CSRF"}],["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"// Express.js avec csurf\nconst csrf = require('csurf');\nconst csrfProtection = csrf({ cookie: true });\n\napp.use(csrfProtection);\n\napp.get('/form', (req, res) => {\n res.render('form', { csrfToken: req.csrfToken() });\n});"}]}],["$","h2",null,{"children":"HTTPS et certificats SSL/TLS"}],"$L10","$L11","$L12","$L13","$L14","$L15","$L16","$L17","$L18","$L19","$L1a","$L1b","$L1c","$L1d","$L1e","$L1f","$L20","$L21","$L22","$L23","$L24","$L25","$L26","$L27","$L28","$L29","$L2a","$L2b","$L2c","$L2d","$L2e","$L2f","$L30","$L31","$L32","$L33","$L34","$L35","$L36","$L37","$L38","$L39"]}],"$L3a"]}],null,"$L3b"]}] d:["$","$1","h",{"children":[null,["$","$L3c",null,{"children":"$@3d"}],["$","div",null,{"hidden":true,"children":["$","$L3e",null,{"children":["$","$3f",null,{"name":"Next.Metadata","children":"$@40"}]}]}],null]}] 41:I[97367,["/_next/static/chunks/ff1a16fafef87110.js","/_next/static/chunks/247eb132b7f7b574.js"],"OutletBoundary"] 10:["$","h3",null,{"children":"Pourquoi HTTPS est indispensable"}] 11:["$","ul",null,{"children":[["$","li",null,{"children":[["$","strong",null,{"children":"Chiffrement des données"}]," : Protection des informations sensibles"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Authentification"}]," : Vérification de l'identité du serveur"]}],["$","li",null,{"children":[["$","strong",null,{"children":"SEO"}]," : Google favorise les sites HTTPS"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Confiance utilisateur"}]," : Absence d'avertissements de sécurité"]}]]}] 12:["$","h3",null,{"children":"Configuration HTTPS optimale"}] 13:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"# Configuration Apache pour HTTPS\n\n SSLEngine on\n SSLCertificateFile /path/to/certificate.crt\n SSLCertificateKeyFile /path/to/private.key\n SSLCertificateChainFile /path/to/chain.crt\n \n # Headers de sécurité\n Header always set Strict-Transport-Security \"max-age=31536000; includeSubDomains\"\n Header always set X-Content-Type-Options nosniff\n Header always set X-Frame-Options DENY\n Header always set X-XSS-Protection \"1; mode=block\"\n"}]}] 14:["$","h2",null,{"children":"Headers de sécurité essentiels"}] 15:["$","h3",null,{"children":"Content Security Policy (CSP)"}] 16:["$","p",null,{"children":"Politique de sécurité qui contrôle les ressources que le navigateur peut charger."}] 17:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"// Header CSP strict\nContent-Security-Policy: default-src 'self'; \n script-src 'self' 'unsafe-inline' https://apis.google.com; \n style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; \n img-src 'self' data: https:; \n font-src 'self' https://fonts.gstatic.com;"}]}] 18:["$","h3",null,{"children":"Autres headers importants"}] 19:["$","div",null,{"className":"bg-gray-50 p-6 rounded-lg my-6","children":["$","ul",null,{"children":[["$","li",null,{"children":[["$","strong",null,{"children":"X-Frame-Options"}]," : Prévient le clickjacking"]}],["$","li",null,{"children":[["$","strong",null,{"children":"X-Content-Type-Options"}]," : Empêche le MIME sniffing"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Referrer-Policy"}]," : Contrôle les informations de référent"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Permissions-Policy"}]," : Contrôle l'accès aux APIs du navigateur"]}]]}]}] 1a:["$","h2",null,{"children":"Authentification et autorisation"}] 1b:["$","h3",null,{"children":"Authentification à deux facteurs (2FA)"}] 1c:["$","p",null,{"children":"L'authentification 2FA ajoute une couche de sécurité supplémentaire essentielle."}] 1d:["$","h4",null,{"children":"Implémentation avec TOTP"}] 1e:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"const speakeasy = require('speakeasy');\n\n// Génération d'un secret pour l'utilisateur\nconst secret = speakeasy.generateSecret({\n name: 'Mon App',\n account: user.email\n});\n\n// Vérification du token TOTP\nconst verified = speakeasy.totp.verify({\n secret: user.twoFactorSecret,\n encoding: 'base32',\n token: userToken,\n window: 1\n});"}]}] 1f:["$","h3",null,{"children":"Gestion sécurisée des mots de passe"}] 20:["$","ul",null,{"children":[["$","li",null,{"children":[["$","strong",null,{"children":"Hachage bcrypt"}]," : Utiliser un coût adapté (12-14)"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Politique de mots de passe"}]," : Longueur minimale, complexité"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Rate limiting"}]," : Limiter les tentatives de connexion"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Compte lockout"}]," : Bloquer après plusieurs échecs"]}]]}] 21:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"const bcrypt = require('bcrypt');\nconst saltRounds = 12;\n\n// Hachage du mot de passe\nconst hashedPassword = await bcrypt.hash(plainPassword, saltRounds);\n\n// Vérification\nconst isValid = await bcrypt.compare(plainPassword, hashedPassword);"}]}] 22:["$","h2",null,{"children":"Sécurité des API"}] 23:["$","h3",null,{"children":"Authentification JWT"}] 24:["$","p",null,{"children":"Les JSON Web Tokens offrent une méthode stateless pour l'authentification."}] 25:["$","h4",null,{"children":"Bonnes pratiques JWT"}] 26:["$","ul",null,{"children":[["$","li",null,{"children":[["$","strong",null,{"children":"Durée de vie courte"}]," : 15-30 minutes pour les access tokens"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Refresh tokens"}]," : Stockés de manière sécurisée"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Signature forte"}]," : Utiliser HS256 ou RS256"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Validation côté serveur"}]," : Vérifier tous les tokens"]}]]}] 27:["$","h3",null,{"children":"Rate limiting et throttling"}] 28:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"const rateLimit = require('express-rate-limit');\n\nconst limiter = rateLimit({\n windowMs: 15 * 60 * 1000, // 15 minutes\n max: 100, // limite chaque IP à 100 requêtes par windowMs\n message: 'Trop de requêtes, réessayez plus tard'\n});\n\napp.use('/api/', limiter);"}]}] 29:["$","h2",null,{"children":"Sécurisation des données"}] 2a:["$","h3",null,{"children":"Chiffrement des données sensibles"}] 2b:["$","p",null,{"children":"Chiffrez toujours les données sensibles, même en base de données."}] 2c:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"const crypto = require('crypto');\n\n// Chiffrement AES-256\nfunction encrypt(text, key) {\n const iv = crypto.randomBytes(16);\n const cipher = crypto.createCipher('aes-256-cbc', key, iv);\n let encrypted = cipher.update(text, 'utf8', 'hex');\n encrypted += cipher.final('hex');\n return iv.toString('hex') + ':' + encrypted;\n}\n\n// Déchiffrement\nfunction decrypt(encryptedText, key) {\n const parts = encryptedText.split(':');\n const iv = Buffer.from(parts[0], 'hex');\n const encrypted = parts[1];\n const decipher = crypto.createDecipher('aes-256-cbc', key, iv);\n let decrypted = decipher.update(encrypted, 'hex', 'utf8');\n decrypted += decipher.final('utf8');\n return decrypted;\n}"}]}] 2d:["$","h3",null,{"children":"Validation et sanitisation des entrées"}] 2e:["$","p",null,{"children":"Ne jamais faire confiance aux données utilisateur."}] 2f:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"const validator = require('validator');\nconst DOMPurify = require('isomorphic-dompurify');\n\n// Validation d'email\nif (!validator.isEmail(email)) {\n throw new Error('Email invalide');\n}\n\n// Sanitisation HTML\nconst cleanHtml = DOMPurify.sanitize(userHtml);\n\n// Validation avec Joi\nconst schema = Joi.object({\n username: Joi.string().alphanum().min(3).max(30).required(),\n email: Joi.string().email().required()\n});"}]}] 30:["$","h2",null,{"children":"Monitoring et détection d'intrusion"}] 31:["$","h3",null,{"children":"Logs de sécurité"}] 32:["$","ul",null,{"children":[["$","li",null,{"children":[["$","strong",null,{"children":"Tentatives de connexion"}]," : Réussies et échouées"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Actions sensibles"}]," : Modifications de données critiques"]}],["$","li",null,{"children":[["$","strong",null,{"children":"Erreurs de sécurité"}]," : Tentatives d'injection, etc."]}],["$","li",null,{"children":[["$","strong",null,{"children":"Anomalies"}]," : Trafic inhabituel, géolocalisation"]}]]}] 33:["$","h3",null,{"children":"Alertes automatisées"}] 34:["$","pre",null,{"className":"bg-gray-900 text-gray-100 p-4 rounded-lg overflow-x-auto","children":["$","code",null,{"children":"// Exemple de monitoring simple\nfunction logSecurityEvent(event, severity, details) {\n const logEntry = {\n timestamp: new Date().toISOString(),\n event,\n severity,\n details,\n ip: req.ip,\n userAgent: req.get('User-Agent')\n };\n \n console.log(JSON.stringify(logEntry));\n \n // Alerte si critique\n if (severity === 'critical') {\n sendAlert(logEntry);\n }\n}"}]}] 35:["$","h2",null,{"children":"Checklist de sécurité 2024"}] 36:["$","div",null,{"className":"bg-red-50 p-6 rounded-lg","children":[["$","h3",null,{"children":"Infrastructure"}],["$","ul",null,{"className":"space-y-2","children":[["$","li",null,{"children":"✅ HTTPS configuré avec certificat valide"}],["$","li",null,{"children":"✅ Headers de sécurité implémentés"}],["$","li",null,{"children":"✅ Firewall web (WAF) actif"}],["$","li",null,{"children":"✅ Serveurs maintenus à jour"}]]}],["$","h3",null,{"children":"Application"}],["$","ul",null,{"className":"space-y-2","children":[["$","li",null,{"children":"✅ Validation de toutes les entrées utilisateur"}],["$","li",null,{"children":"✅ Protection contre XSS, CSRF, injection SQL"}],["$","li",null,{"children":"✅ Authentification forte (2FA recommandé)"}],["$","li",null,{"children":"✅ Gestion sécurisée des sessions"}]]}],["$","h3",null,{"children":"Données"}],["$","ul",null,{"className":"space-y-2","children":[["$","li",null,{"children":"✅ Chiffrement des données sensibles"}],["$","li",null,{"children":"✅ Sauvegardes sécurisées et testées"}],["$","li",null,{"children":"✅ Principe du moindre privilège"}],["$","li",null,{"children":"✅ Logs de sécurité et monitoring"}]]}]]}] 37:["$","h2",null,{"children":"Conclusion"}] 38:["$","p",null,{"children":"La sécurité web en 2024 nécessite une approche multicouche et proactive. Les menaces évoluent constamment, mais en appliquant ces fondamentaux et en maintenant une veille sécuritaire active, vous pouvez considérablement réduire les risques pour votre site et vos utilisateurs."}] 39:["$","p",null,{"children":"N'oubliez pas que la sécurité est un processus continu, pas un état final. Planifiez des audits réguliers et restez informé des nouvelles vulnérabilités et pratiques de sécurité."}] 3a:["$","footer",null,{"className":"mt-16 pt-8 border-t border-gray-200","children":["$","div",null,{"className":"flex items-center justify-between","children":[["$","div",null,{"children":[["$","p",null,{"className":"text-sm text-gray-600 mb-2","children":"Publié le 22 Février 2024"}],["$","div",null,{"className":"flex items-center space-x-4","children":[["$","span",null,{"className":"text-sm text-gray-500","children":"Partager:"}],["$","a",null,{"href":"#","className":"text-tuxyoBlue hover:text-blue-700","children":"Twitter"}],["$","a",null,{"href":"#","className":"text-tuxyoBlue hover:text-blue-700","children":"LinkedIn"}]]}]]}],["$","$Lf",null,{"href":"/blog","className":"bg-tuxyoBlue text-white px-6 py-2 rounded-lg font-medium hover:bg-blue-700 transition","children":"← Retour au blog"}]]}]}] 3b:["$","$L41",null,{"children":["$","$3f",null,{"name":"Next.MetadataOutlet","children":"$@42"}]}] 3d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 40:[["$","title","0",{"children":"Tuxyo - Solutions logicielles expertes"}],["$","meta","1",{"name":"description","content":"Expertise en développement logiciel avec +25 ans d'expérience. Spécialisé en Java, NodeJS, Spring Boot, ReactJS, et solutions Cloud. Architecture et développement de solutions robustes."}]] 42:null