Exemple:

Considérez un simple formulaire de connexion qui pourrait être sensible à l'injection de JavaScript. Voici comment vous pouvez le sécuriser :

HTML :

Javascript :

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);}

Côté serveur (exemple Node.js) :

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\\');});

Conclusion:

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"}}
"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Techniques avancées pour détecter et prévenir les attaques par injection JavaScript

Techniques avancées pour détecter et prévenir les attaques par injection JavaScript

Publié le 2024-08-01
Parcourir:364

Advanced Techniques for Detecting and Preventing JavaScript Injection Attacks

Introduction:

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.

Qu’est-ce que l’injection JavaScript ?

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.

Types courants d’attaques par injection JavaScript :

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.

Détection des attaques par injection JavaScript :

1. Validation des entrées :

  • Validez toutes les entrées utilisateur côté client et côté serveur.
  • Utilisez des expressions régulières pour garantir que les entrées répondent aux formats attendus.
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');
}

2. Politique de sécurité du contenu (CSP) :

Implémentez CSP pour contrôler les sources à partir desquelles JavaScript peut être chargé et exécuté.


3.Échapper à l'entrée de l'utilisateur :

É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;

Prévention des attaques par injection JavaScript :

1. Utilisez des déclarations préparées :

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
});

2. Désinfectez les entrées utilisateur :

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;

Cookies HTTP uniquement :

Utilisez des cookies HTTP uniquement pour empêcher l'accès aux cookies via JavaScript.

document.cookie = "sessionId=abc123; HttpOnly";

4. Limiter les capacités JavaScript :

Utilisez des fonctionnalités telles que l'intégrité des sous-ressources (SRI) pour garantir que seuls les scripts fiables sont exécutés.



Exemple:

Considérez un simple formulaire de connexion qui pourrait être sensible à l'injection de JavaScript. Voici comment vous pouvez le sécuriser :

HTML :

Javascript :

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);
}

Côté serveur (exemple Node.js) :

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');
});

Conclusion:

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 !

Déclaration de sortie Cet article est reproduit sur : https://dev.to/rigalpatel001/advanced-techniques-for-detecting-and-preventing-javascript-injection-attacks-4n61?1 En cas de violation, veuillez contacter [email protected] pour le supprimer
Dernier tutoriel Plus>

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