Considérez un simple formulaire de connexion qui pourrait être sensible à l'injection de JavaScript. Voici comment vous pouvez le sécuriser :
document.getElementById(\\'login-form\\').addEventListener(\\'submit\\', function(event) { const username = document.getElementById(\\'username\\').value; const password = document.getElementById(\\'password\\').value; if (!validateInput(username) || !validateInput(password)) { alert(\\'Invalid input\\'); event.preventDefault(); }});function validateInput(input) { const regex = /^[a-zA-Z0-9_]*$/; return regex.test(input);}
const express = require(\\'express\\');const app = express();const bodyParser = require(\\'body-parser\\');const mysql = require(\\'mysql\\');const db = mysql.createConnection({ host: \\'localhost\\', user: \\'root\\', password: \\'\\', database: \\'test\\'});app.use(bodyParser.urlencoded({ extended: true }));app.post(\\'/login\\', (req, res) => { const username = req.body.username; const password = req.body.password; const query = \\'SELECT * FROM users WHERE username = ? AND password = ?\\'; db.execute(query, [username, password], (err, results) => { if (err) throw err; if (results.length > 0) { res.send(\\'Login successful\\'); } else { res.send(\\'Invalid credentials\\'); } });});app.listen(3000, () => { console.log(\\'Server is running on port 3000\\');});
Détecter et prévenir les attaques par injection JavaScript est crucial pour maintenir la sécurité de vos applications Web. En mettant en œuvre les techniques décrites dans ce blog, vous pouvez réduire considérablement le risque de telles attaques. N'oubliez pas de valider et de nettoyer toutes les entrées de l'utilisateur, d'utiliser CSP, les cookies HTTP uniquement et de limiter les capacités JavaScript à l'aide de SRI.
Restez à l'écoute pour plus de blogs sur des sujets JavaScript avancés et la sécurité Web. N'hésitez pas à partager vos réflexions et expériences dans les commentaires ci-dessous. Ensemble, nous pouvons créer des applications Web plus sécurisées !
","image":"http://www.luping.net/uploads/20240801/172248888466ab183485a83.jpg","datePublished":"2024-08-01T13:08:03+08:00","dateModified":"2024-08-01T13:08:03+08:00","author":{"@type":"Person","name":"luping.net","url":"https://www.luping.net/articlelist/0_1.html"}}Les attaques par injection JavaScript constituent une menace de sécurité importante pour les applications Web. Ces attaques peuvent entraîner des violations de données, des actions non autorisées et divers autres problèmes de sécurité. Je vous guiderai à travers des techniques avancées pour détecter et prévenir les attaques par injection JavaScript. Ce blog comprendra des exemples de code concrets pour vous aider à comprendre et à mettre en œuvre ces techniques efficacement.
L'injection JavaScript se produit lorsqu'un attaquant parvient à injecter du code malveillant dans une application Web. Cela peut se produire par divers moyens, tels que les champs de saisie, les paramètres d'URL ou même les cookies. Une fois injecté, le code malveillant peut s'exécuter dans le contexte de l'application Web, entraînant potentiellement un vol de données, des actions non autorisées et d'autres conséquences néfastes.
1. Cross-Site Scripting (XSS) : Injection de scripts malveillants dans des pages Web consultées par d'autres utilisateurs.
2. XSS basé sur DOM : Manipulation de l'environnement DOM pour exécuter du JavaScript malveillant.
3. Injection SQL : Injection de commandes SQL pouvant exécuter des requêtes arbitraires sur la base de données.
function validateInput(input) { const regex = /^[a-zA-Z0-9_]*$/; // Example regex for alphanumeric and underscore return regex.test(input); } const userInput = document.getElementById('user-input').value; if (!validateInput(userInput)) { alert('Invalid input'); }
Implémentez CSP pour contrôler les sources à partir desquelles JavaScript peut être chargé et exécuté.
Évitez toutes les entrées utilisateur pour empêcher l'exécution de scripts malveillants.
function escapeHTML(input) { const div = document.createElement('div'); div.appendChild(document.createTextNode(input)); return div.innerHTML; } const safeInput = escapeHTML(userInput); document.getElementById('output').innerHTML = safeInput;
Pour les requêtes SQL, utilisez des instructions préparées pour éviter l'injection SQL.
const query = 'SELECT * FROM users WHERE username = ?'; db.execute(query, [username], (err, results) => { // Handle results });
Utilisez des bibliothèques comme DOMPurify pour nettoyer le HTML et empêcher les attaques XSS.
const cleanInput = DOMPurify.sanitize(userInput); document.getElementById('output').innerHTML = cleanInput;
Utilisez des cookies HTTP uniquement pour empêcher l'accès aux cookies via JavaScript.
document.cookie = "sessionId=abc123; HttpOnly";
Utilisez des fonctionnalités telles que l'intégrité des sous-ressources (SRI) pour garantir que seuls les scripts fiables sont exécutés.
Considérez un simple formulaire de connexion qui pourrait être sensible à l'injection de JavaScript. Voici comment vous pouvez le sécuriser :
document.getElementById('login-form').addEventListener('submit', function(event) { const username = document.getElementById('username').value; const password = document.getElementById('password').value; if (!validateInput(username) || !validateInput(password)) { alert('Invalid input'); event.preventDefault(); } }); function validateInput(input) { const regex = /^[a-zA-Z0-9_]*$/; return regex.test(input); }
const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const mysql = require('mysql'); const db = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database: 'test' }); app.use(bodyParser.urlencoded({ extended: true })); app.post('/login', (req, res) => { const username = req.body.username; const password = req.body.password; const query = 'SELECT * FROM users WHERE username = ? AND password = ?'; db.execute(query, [username, password], (err, results) => { if (err) throw err; if (results.length > 0) { res.send('Login successful'); } else { res.send('Invalid credentials'); } }); }); app.listen(3000, () => { console.log('Server is running on port 3000'); });
Détecter et prévenir les attaques par injection JavaScript est crucial pour maintenir la sécurité de vos applications Web. En mettant en œuvre les techniques décrites dans ce blog, vous pouvez réduire considérablement le risque de telles attaques. N'oubliez pas de valider et de nettoyer toutes les entrées de l'utilisateur, d'utiliser CSP, les cookies HTTP uniquement et de limiter les capacités JavaScript à l'aide de SRI.
Restez à l'écoute pour plus de blogs sur des sujets JavaScript avancés et la sécurité Web. N'hésitez pas à partager vos réflexions et expériences dans les commentaires ci-dessous. Ensemble, nous pouvons créer des applications Web plus sécurisées !
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3