0Pricing
Edge Computing with Cloudflare Workers & Deno · درس

تنقية المدخلات ومنع الحقن

دافع عن تطبيقات الحافة ضد XSS وSQL injection والهجمات ذات الصلة عبر تنقية المدخلات وترميز المخرجات بطريقة صحيحة.

تنقية المدخلات ومنع الحقن درس مجاني في Edge Computing with Cloudflare Workers & Deno على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Edge Computing with Cloudflare Workers & Deno، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Edge Computing with Cloudflare Workers & Deno 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

Why Sanitization Matters

Even at the edge, untrusted input is the root of most attacks. Sanitization and proper output encoding stop:

  • Cross-Site Scripting (XSS)
  • SQL / query injection
  • Header and log injection

Validation checks shape, sanitization makes input safe to use.

Understanding XSS

XSS happens when attacker-controlled data is rendered as HTML and executes as script.

If a Worker echoes user input into a page without encoding, an attacker can inject scripts.

// Dangerous: user input goes straight into HTML
const html = '<div>' + userInput + '</div>';

Output Encoding for HTML

The fix for XSS is context-aware output encoding. Escape HTML-special characters before rendering.

function escapeHtml(s) {
  return s
    .replace(/&/g, '&amp;')
    .replace(/</g, '&lt;')
    .replace(/>/g, '&gt;')
    .replace(/"/g, '&quot;')
    .replace(/'/g, '&#39;');
}

Preventing SQL Injection

Never build SQL by string concatenation. Use parameterized queries, the D1 and Deno drivers bind values safely.

// Safe: bound parameter, never concatenated
const { results } = await env.DB
  .prepare('SELECT * FROM users WHERE email = ?')
  .bind(email)
  .all();

The Danger of Concatenation

Concatenated SQL lets an attacker break out of the intended query.

// NEVER do this
const sql = "SELECT * FROM users WHERE email = '" + email + "'";
// email = "' OR '1'='1" returns every row

Validate Then Sanitize

Combine both defenses: validate that input matches an expected pattern, then sanitize for the context it is used in.

const emailRe = /^[^@\s]+@[^@\s]+\.[^@\s]+$/;
if (!emailRe.test(email)) {
  return new Response('Invalid email', { status: 400 });
}

Header & Redirect Injection

User input placed into response headers or redirect URLs can inject newlines or open redirects.

  • Strip CR/LF from header values
  • Allowlist redirect destinations
const clean = value.replace(/[\r\n]/g, '');
headers.set('X-User-Tag', clean);

Content Security Policy

A CSP header is a strong second line of defense against XSS, it restricts what scripts may run.

headers.set(
  'Content-Security-Policy',
  "default-src 'self'; script-src 'self'"
);

Sanitizing Rich HTML

When you must accept HTML (e.g. user comments), use a vetted sanitizer library rather than regex, allowlist safe tags and attributes.

import DOMPurify from 'isomorphic-dompurify';
const safe = DOMPurify.sanitize(userHtml);

Defense in Depth

No single control is enough. Layer defenses:

  • Validate input shape
  • Use parameterized queries
  • Encode output per context
  • Set CSP and security headers

If one layer fails, the others still protect you.

Best Practices Summary

To keep edge apps safe:

  • Treat all input as hostile
  • Never concatenate SQL or HTML with raw input
  • Encode for the exact output context
  • Add CSP and strip control characters from headers

Quick Check

What is the most reliable way to prevent SQL injection in a D1 query?

Recap

You hardened your app against injection:

  • Encode output to stop XSS
  • Use parameterized queries to stop SQL injection
  • Strip control characters and allowlist redirects
  • Add CSP and sanitize rich HTML with a trusted library

Defense in depth keeps edge applications resilient even when one layer slips.

الأسئلة الشائعة

هل درس «تنقية المدخلات ومنع الحقن» مجاني؟

نعم — نص درس «تنقية المدخلات ومنع الحقن» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Edge Computing with Cloudflare Workers & Deno، انتقل إلى CoddyKit PRO. تتضمن دورة Edge Computing with Cloudflare Workers & Deno 4 دروس في المجموع.

ماذا ستتعلم في «تنقية المدخلات ومنع الحقن»؟

دافع عن تطبيقات الحافة ضد XSS وSQL injection والهجمات ذات الصلة عبر تنقية المدخلات وترميز المخرجات بطريقة صحيحة. تتمرن على Edge Computing with Cloudflare Workers & Deno مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Edge Computing with Cloudflare Workers & Deno؟

لا تُشترط خبرة سابقة. Edge Computing with Cloudflare Workers & Deno على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تنقية المدخلات ومنع الحقن»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Edge Computing with Cloudflare Workers & Deno هذا؟

نعم. كل درس في Edge Computing with Cloudflare Workers & Deno يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. المصادقة والتفويض
  2. تحديد معدل الطلبات والحماية من DDoS
  3. إدارة الأسرار بأمان
  4. تنقية المدخلات ومنع الحقن
← العودة إلى Edge Computing with Cloudflare Workers & Deno