مثال:

فكر في نموذج تسجيل دخول بسيط قد يكون عرضة لإدخال جافا سكريبت. إليك كيفية تأمينه:

لغة البرمجة:

جافا سكريبت:

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

جانب الخادم (مثال 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\\');});

خاتمة:

يعد اكتشاف هجمات حقن JavaScript ومنعها أمرًا ضروريًا للحفاظ على أمان تطبيقات الويب الخاصة بك. من خلال تطبيق التقنيات التي تمت مناقشتها في هذه المدونة، يمكنك تقليل مخاطر مثل هذه الهجمات بشكل كبير. تذكر التحقق من صحة جميع مدخلات المستخدم وتطهيرها، واستخدام CSP، وملفات تعريف الارتباط HTTP فقط، والحد من إمكانات JavaScript باستخدام SRI.

ترقبوا المزيد من المدونات حول موضوعات JavaScript المتقدمة وأمن الويب. لا تتردد في مشاركة أفكارك وتجاربك في التعليقات أدناه. معًا، يمكننا إنشاء تطبيقات ويب أكثر أمانًا!

","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"}}
"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > تقنيات متقدمة لاكتشاف ومنع هجمات حقن جافا سكريبت

تقنيات متقدمة لاكتشاف ومنع هجمات حقن جافا سكريبت

تم النشر بتاريخ 2024-08-01
تصفح:791

Advanced Techniques for Detecting and Preventing JavaScript Injection Attacks

مقدمة:

تمثل هجمات حقن جافا سكريبت تهديدًا أمنيًا كبيرًا لتطبيقات الويب. يمكن أن تؤدي هذه الهجمات إلى اختراق البيانات، وإجراءات غير مصرح بها، والعديد من المشكلات الأمنية الأخرى. سأرشدك عبر التقنيات المتقدمة لاكتشاف هجمات حقن JavaScript ومنعها. ستتضمن هذه المدونة نموذجًا برمجيًا من العالم الحقيقي لمساعدتك على فهم هذه التقنيات وتنفيذها بفعالية.

ما هو حقن جافا سكريبت؟

يحدث حقن جافا سكريبت عندما يتمكن المهاجم من إدخال تعليمات برمجية ضارة في تطبيق ويب. يمكن أن يحدث هذا من خلال وسائل مختلفة، مثل حقول الإدخال أو معلمات URL أو حتى ملفات تعريف الارتباط. بمجرد حقنها، يمكن تنفيذ التعليمات البرمجية الضارة في سياق تطبيق الويب، مما قد يؤدي إلى سرقة البيانات، وإجراءات غير مصرح بها، وعواقب ضارة أخرى.

الأنواع الشائعة لهجمات حقن جافا سكريبت:

1. البرمجة النصية عبر المواقع (XSS): حقن البرامج النصية الضارة في صفحات الويب التي يشاهدها المستخدمون الآخرون.
2. XSS القائم على DOM: التلاعب ببيئة DOM لتنفيذ JavaScript ضار.
3. حقن SQL: حقن أوامر SQL التي يمكنها تنفيذ استعلامات عشوائية في قاعدة البيانات.

اكتشاف هجمات حقن جافا سكريبت:

1. التحقق من صحة الإدخال:

  • التحقق من صحة جميع مدخلات المستخدم على جانبي العميل والخادم.
  • استخدم التعبيرات العادية للتأكد من أن المدخلات تلبي التنسيقات المتوقعة.
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. سياسة أمان المحتوى (CSP):

تنفيذ CSP للتحكم في المصادر التي يمكن تحميل JavaScript وتنفيذها منها.


3.الهروب من إدخال المستخدم:

تجنب كافة مدخلات المستخدم لمنع تنفيذ البرامج النصية الضارة.

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;

منع هجمات حقن جافا سكريبت:

1. استخدم البيانات المعدة:

بالنسبة لاستعلامات SQL، استخدم العبارات المعدة لتجنب حقن SQL.

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

2. تطهير مدخلات المستخدم:

استخدم مكتبات مثل DOMPurify لتطهير HTML ومنع هجمات XSS.

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

ملفات تعريف الارتباط الخاصة بـ HTTP فقط:

استخدم ملفات تعريف الارتباط HTTP فقط لمنع الوصول إلى ملفات تعريف الارتباط عبر JavaScript.

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

4. الحد من قدرات جافا سكريبت:

استخدم ميزات مثل تكامل الموارد الفرعية (SRI) لضمان تنفيذ البرامج النصية الموثوقة فقط.



مثال:

فكر في نموذج تسجيل دخول بسيط قد يكون عرضة لإدخال جافا سكريبت. إليك كيفية تأمينه:

لغة البرمجة:

جافا سكريبت:

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

جانب الخادم (مثال 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');
});

خاتمة:

يعد اكتشاف هجمات حقن JavaScript ومنعها أمرًا ضروريًا للحفاظ على أمان تطبيقات الويب الخاصة بك. من خلال تطبيق التقنيات التي تمت مناقشتها في هذه المدونة، يمكنك تقليل مخاطر مثل هذه الهجمات بشكل كبير. تذكر التحقق من صحة جميع مدخلات المستخدم وتطهيرها، واستخدام CSP، وملفات تعريف الارتباط HTTP فقط، والحد من إمكانات JavaScript باستخدام SRI.

ترقبوا المزيد من المدونات حول موضوعات JavaScript المتقدمة وأمن الويب. لا تتردد في مشاركة أفكارك وتجاربك في التعليقات أدناه. معًا، يمكننا إنشاء تطبيقات ويب أكثر أمانًا!

بيان الافراج تم إعادة إنتاج هذه المقالة على: https://dev.to/rigalpatel001/advanced-techniques-for-detecting-and-preventing-javascript-injection-attacks-4n61?1 إذا كان هناك أي انتهاك، يرجى الاتصال بـ [email protected] لحذفه
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3