Beispiel:

Stellen Sie sich ein einfaches Anmeldeformular vor, das anfällig für JavaScript-Injection sein könnte. So können Sie es sichern:

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

Serverseitig (Node.js-Beispiel):

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

Abschluss:

Das Erkennen und Verhindern von JavaScript-Injection-Angriffen ist entscheidend für die Aufrechterhaltung der Sicherheit Ihrer Webanwendungen. Durch die Implementierung der in diesem Blog besprochenen Techniken können Sie das Risiko solcher Angriffe erheblich reduzieren. Denken Sie daran, alle Benutzereingaben zu validieren und zu bereinigen, CSP und reine HTTP-Cookies zu verwenden und die JavaScript-Funktionen mithilfe von SRI einzuschränken.

Seien Sie gespannt auf weitere Blogs zu fortgeschrittenen JavaScript-Themen und Websicherheit. Teilen Sie Ihre Gedanken und Erfahrungen gerne in den Kommentaren unten mit. Gemeinsam können wir sicherere Webanwendungen erstellen!

","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"}}
„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Erweiterte Techniken zur Erkennung und Verhinderung von JavaScript-Injection-Angriffen

Erweiterte Techniken zur Erkennung und Verhinderung von JavaScript-Injection-Angriffen

Veröffentlicht am 01.08.2024
Durchsuche:655

Advanced Techniques for Detecting and Preventing JavaScript Injection Attacks

Einführung:

JavaScript-Injection-Angriffe stellen eine erhebliche Sicherheitsbedrohung für Webanwendungen dar. Diese Angriffe können zu Datenschutzverletzungen, unbefugten Aktionen und verschiedenen anderen Sicherheitsproblemen führen. Ich führe Sie durch fortgeschrittene Techniken zur Erkennung und Verhinderung von JavaScript-Injection-Angriffen. Dieser Blog enthält Beispielcode aus der Praxis, der Ihnen hilft, diese Techniken zu verstehen und effektiv zu implementieren.

Was ist JavaScript-Injection?

JavaScript-Injection liegt vor, wenn es einem Angreifer gelingt, Schadcode in eine Webanwendung einzuschleusen. Dies kann über verschiedene Mittel geschehen, beispielsweise über Eingabefelder, URL-Parameter oder auch Cookies. Sobald der Schadcode eingeschleust wurde, kann er im Kontext der Webanwendung ausgeführt werden, was möglicherweise zu Datendiebstahl, unbefugten Aktionen und anderen schädlichen Folgen führt.

Häufige Arten von JavaScript-Injection-Angriffen:

1. Cross-Site Scripting (XSS): Einschleusen schädlicher Skripte in Webseiten, die von anderen Benutzern angezeigt werden.
2. DOM-basiertes XSS: Manipulation der DOM-Umgebung, um schädliches JavaScript auszuführen.
3. SQL-Injection: Injizieren von SQL-Befehlen, die beliebige Abfragen in der Datenbank ausführen können.

Erkennen von JavaScript-Injection-Angriffen:

1. Eingabevalidierung:

  • Validieren Sie alle Benutzereingaben sowohl auf der Client- als auch auf der Serverseite.
  • Verwenden Sie reguläre Ausdrücke, um sicherzustellen, dass die Eingaben den erwarteten Formaten entsprechen.
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. Inhaltssicherheitsrichtlinie (CSP):

Implementieren Sie CSP, um die Quellen zu steuern, aus denen JavaScript geladen und ausgeführt werden kann.


3. Benutzereingaben entkommen:

Entfernen Sie alle Benutzereingaben, um die Ausführung schädlicher Skripte zu verhindern.

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;

Verhindern von JavaScript-Injection-Angriffen:

1. Verwenden Sie vorbereitete Aussagen:

Verwenden Sie für SQL-Abfragen vorbereitete Anweisungen, um SQL-Injection zu vermeiden.

const query = 'SELECT * FROM users WHERE username = ?';
db.execute(query, [username], (err, results) => {
    // Handle results
});

2. Bereinigen Sie Benutzereingaben:

Verwenden Sie Bibliotheken wie DOMPurify, um HTML zu bereinigen und XSS-Angriffe zu verhindern.

const cleanInput = DOMPurify.sanitize(userInput);
document.getElementById('output').innerHTML = cleanInput;

Nur HTTP-Cookies:

Verwenden Sie reine HTTP-Cookies, um den Zugriff auf Cookies über JavaScript zu verhindern.

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

4. Beschränken Sie die JavaScript-Funktionen:

Verwenden Sie Funktionen wie Subresource Integrity (SRI), um sicherzustellen, dass nur vertrauenswürdige Skripte ausgeführt werden.



Beispiel:

Stellen Sie sich ein einfaches Anmeldeformular vor, das anfällig für JavaScript-Injection sein könnte. So können Sie es sichern:

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

Serverseitig (Node.js-Beispiel):

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

Abschluss:

Das Erkennen und Verhindern von JavaScript-Injection-Angriffen ist entscheidend für die Aufrechterhaltung der Sicherheit Ihrer Webanwendungen. Durch die Implementierung der in diesem Blog besprochenen Techniken können Sie das Risiko solcher Angriffe erheblich reduzieren. Denken Sie daran, alle Benutzereingaben zu validieren und zu bereinigen, CSP und reine HTTP-Cookies zu verwenden und die JavaScript-Funktionen mithilfe von SRI einzuschränken.

Seien Sie gespannt auf weitere Blogs zu fortgeschrittenen JavaScript-Themen und Websicherheit. Teilen Sie Ihre Gedanken und Erfahrungen gerne in den Kommentaren unten mit. Gemeinsam können wir sicherere Webanwendungen erstellen!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/rigalpatel001/advanced-techniques-for-detecting-and-preventing-javascript-injection-attacks-4n61?1 Bei Verstößen wenden Sie sich bitte an [email protected] um es zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3