לדלג לתוכן

🔒 מבוא לאבטחת אפליקציות Web

ברוכים הבאים!

קורס מקיף לאבטחת אפליקציות Node.js/Express למתחילים. הקורס מכסה את כל נושאי האבטחה החיוניים לפיתוח Backend מאובטח.

🎯 למה אבטחה חשובה?

  • 🛡️ הגנה על נתוני משתמשים - מידע אישי, סיסמאות ופרטי תשלום חייבים להיות מוגנים
  • 🚨 מניעת פריצות ודליפות - פגיעות אבטחה עלולות לגרום לנזק כספי ותדמיתי חמור
  • ⚖️ עמידה בתקנים ודרישות חוק - GDPR, SOC2 ותקני אבטחה נוספים
  • 💼 דרישה מקצועית - כל חברת הייטק מצפה למפתחים שכותבים קוד מאובטח
  • 🎯 אחריות מקצועית - אבטחה היא חלק בלתי נפרד מהפיתוח, לא תוספת

📚 מבנה הקורס

חלק א' - יסודות אבטחה 🏗️

מספר נושא תיאור קובץ
1 CORS שיתוף משאבים בין מקורות 📖 01_cors.md
2 HTTPS חיבור מאובטח ומוצפן 📖 02_https.md
3 Environment Variables משתני סביבה - הגנה על מידע רגיש 📖 03_environment_variables.md

חלק ב' - אימות והרשאות 🔐

מספר נושא תיאור קובץ
4 Hash, bcrypt ו-Salt הצפנת סיסמאות נכונה 📖 04_hash_bcrypt_salt.md
5 JWT אסימוני אימות (JSON Web Tokens) 📖 05_jwt.md
13 OAuth 2.0 אימות מבוסס שירותים חיצוניים 📖 13_oauth.md

חלק ג' - אימות קלט ומניעת הזרקות 🛡️

מספר נושא תיאור קובץ
6 Input Validation אימות וניקוי קלט 📖 06_input_validation.md
7 SQL Injection מניעת התקפות על מסדי נתונים 📖 07_sql_injection.md
8 NoSQL Injection אבטחת MongoDB ומסדי NoSQL 📖 08_nosql_injection.md

חלק ד' - התקפות מצד הלקוח ⚔️

מספר נושא תיאור קובץ
9 XSS Cross-Site Scripting - הזרקת קוד זדוני 📖 09_xss.md
10 CSRF Cross-Site Request Forgery - זיוף בקשות 📖 10_csrf.md

חלק ה' - חיזוק השרת 🚀

מספר נושא תיאור קובץ
11 Helmet.js אבטחת HTTP Headers 📖 11_helmet.md
12 Rate Limiting הגבלת קצב בקשות 📖 12_rate_limiting.md

חלק ו' - אבטחת API מתקדמת 🔌

מספר נושא תיאור קובץ
14 File Upload Security אבטחת העלאת קבצים 📖 14_file_upload_security.md
15 API Key Management ניהול מפתחות API 📖 15_api_key_management.md

חלק ז' - ניהול סשנים ומעקב 📊

מספר נושא תיאור קובץ
16 Session Management ניהול סשנים מאובטח 📖 16_session_management.md
17 Security Logging לוגים ומעקב אבטחה 📖 17_security_logging.md

חלק ח' - אבטחת תלויות 📦

מספר נושא תיאור קובץ
18 Dependency Security אבטחת תלויות NPM 📖 18_dependency_security.md

💻 תיקיית דוגמאות

כל מדריך מלווה בדוגמת קוד מעשית וניתנת להרצה:

מספר נושא קובץ דוגמה
1 CORS 01_cors_example.js
2 HTTPS 02_https_example.js
3 Environment Variables 03_env_example.js
4 Hash & bcrypt 04_bcrypt_example.js
5 JWT 05_jwt_example.js
6 Input Validation 06_validation_example.js
7 SQL Injection 07_sql_injection_example.js
8 NoSQL Injection 08_nosql_injection_example.js
9 XSS 09_xss_example.js
10 CSRF 10_csrf_example.js
11 Helmet.js 11_helmet_example.js
12 Rate Limiting 12_rate_limiting_example.js
13 OAuth 2.0 13_oauth_example.js
14 File Upload Security 14_file_upload_example.js
15 API Key Management 15_api_key_example.js
16 Session Management 16_session_example.js
17 Security Logging 17_logging_example.js
18 Dependency Security 18_dependency_check.js

🔧 דרישות מקדימות

לפני שמתחילים, וודאו שמותקן אצלכם:

תוכנות נדרשות:

  • Node.js (גרסה 18 ומעלה) - להורדה
  • npm (מגיע עם Node.js)
  • MongoDB (לדוגמאות NoSQL) - להורדה
  • עורך קוד - מומלץ VS Code

בדיקת התקנה:

node --version   # צריך להציג v18.0.0 או יותר
npm --version    # צריך להציג 9.0.0 או יותר

ידע מקדים מומלץ:

  • ✅ JavaScript בסיסי (ES6+)
  • ✅ Node.js יסודי
  • ✅ Express.js בסיסי
  • ✅ הבנת HTTP requests/responses
  • ⚠️ ניסיון עם MongoDB (לחלק מהדוגמאות)

🚀 התקנה והפעלה

שלב 1: הורדת הקוד והתקנת תלויות

# נווט לתיקיית הדוגמאות
cd C:\Full-Stack\Security\introduction\examples

# התקן את כל התלויות
npm install

שלב 2: הגדרת משתני סביבה

העתק את קובץ התבנית ליצירת קובץ .env:

# במערכות Windows (PowerShell)
copy .env.example .env

# במערכות Mac/Linux
cp .env.example .env

ערוך את קובץ .env והגדר את הערכים שלך:

JWT_SECRET=my-super-secret-key-12345678901234567890
JWT_REFRESH_SECRET=my-refresh-secret-09876543210987654321
MONGODB_URI=mongodb://localhost:27017/security-demo
PORT=3000

⚠️ חשוב: אל תשתף את קובץ ה-.env שלך! הוא מכיל מידע רגיש.

שלב 3: הפעלת דוגמה

# הפעל דוגמה ספציפית
node 01_cors_example.js

# או עם טעינת משתני סביבה
node --env-file=.env 05_jwt_example.js

שלב 4: בדיקת השרת

פתח דפדפן וגש ל:

http://localhost:3000


📖 סדר לימוד מומלץ

🗓️ שבוע 1: יסודות אבטחה (פרקים 1-3)

מטרה: הבנת תשתית אבטחה בסיסית

  • יום 1-2: CORS - למד מה זה ואיך להגדיר נכון
  • יום 3-4: HTTPS - הבן למה חיבור מוצפן חשוב
  • יום 5-6: Environment Variables - נהל סודות בצורה נכונה
  • יום 7: תרגול - הרץ את כל הדוגמאות ושחק איתן

תוצאה: בסוף השבוע תדע להקים שרת עם תשתית אבטחה בסיסית.

🗓️ שבוע 2: אימות והרשאות (פרקים 4-5)

מטרה: יישום מערכת אימות מלאה

  • יום 1-3: Hash & bcrypt - הצפנת סיסמאות נכונה
  • יום 4-7: JWT - מערכת אימות מבוססת tokens

פרויקט שבועי: בנה API עם רישום, התחברות ו-protected routes.

🗓️ שבוע 3: מניעת הזרקות (פרקים 6-8)

מטרה: הגנה מפני התקפות injection

  • יום 1-2: Input Validation - אמת קלט נכון
  • יום 3-4: SQL Injection - הגן על מסד הנתונים
  • יום 5-6: NoSQL Injection - אבטח MongoDB
  • יום 7: תרגול - נסה לתקוף את הדוגמאות ותקן אותן

פרויקט שבועי: צור API מאובטח עם validation מלא.

🗓️ שבוע 4: התקפות Client-Side (פרקים 9-10)

מטרה: הגנה על המשתמשים

  • יום 1-3: XSS - מנע הזרקת קוד זדוני
  • יום 4-6: CSRF - הגן מפני זיוף בקשות
  • יום 7: תרגול והבנת attack vectors

פרויקט שבועי: הוסף הגנות XSS ו-CSRF לפרויקט קיים.

🗓️ שבוע 5: חיזוק השרת (פרקים 11-12)

מטרה: הגנה פרואקטיבית

  • יום 1-3: Helmet.js - הוסף security headers
  • יום 4-6: Rate Limiting - הגבל בקשות
  • יום 7: תרגול - שילוב כל שכבות ההגנה

פרויקט שבועי: שדרג את האפליקציה שלך עם Helmet ו-Rate Limiting.

🗓️ שבוע 6: אבטחת API מתקדמת (פרקים 14-15)

מטרה: אבטחת APIs ופיצ'רים מתקדמים

  • יום 1-4: File Upload Security - העלאת קבצים בטוחה
  • יום 5-7: API Key Management - ניהול מפתחות API

פרויקט שבועי: צור API עם העלאת קבצים ו-API keys.

🗓️ שבוע 7: ניהול סשנים ומעקב (פרקים 16-17)

מטרה: ניהול sessions ומעקב אבטחה

  • יום 1-3: Session Management - סשנים עם Redis
  • יום 4-7: Security Logging - לוגים ומעקב

פרויקט שבועי: הוסף sessions ולוגים לאפליקציה.

🗓️ שבוע 8: אבטחת תלויות ופרויקט גמר (פרק 18)

מטרה: אבטחת dependencies ופרויקט מסכם

  • יום 1-2: Dependency Security - npm audit ובדיקות
  • יום 3-7: פרויקט גמר - צור אפליקציה מאובטחת מלאה!

פרויקט גמר: אפליקציה עם כל 18 שכבות האבטחה שלמדת.


✅ נושאים שנכללים בקורס

🏗️ יסודות

  • CORS - Cross-Origin Resource Sharing
  • HTTPS - חיבור מוצפן
  • Environment Variables - ניהול סודות

🔐 אימות

  • Hashing - הצפנה חד-כיוונית
  • Salt - הגנה מפני Rainbow Tables
  • bcrypt - הצפנת סיסמאות
  • JWT - JSON Web Tokens
  • Access & Refresh Tokens
  • Authentication Middleware
  • OAuth 2.0 - אימות דרך Google, GitHub, Facebook
  • PKCE - Proof Key for Code Exchange
  • OpenID Connect (OIDC)
  • Social Login Integration

🛡️ מניעת Injection

  • Input Validation - אימות קלט
  • Sanitization - ניקוי קלט
  • SQL Injection Prevention
  • NoSQL Injection Prevention
  • Parameterized Queries
  • ORM Security (Sequelize, Mongoose)

⚔️ התקפות Client-Side

  • XSS - Cross-Site Scripting
  • CSRF - Cross-Site Request Forgery
  • Content Security Policy (CSP)
  • CSRF Tokens
  • SameSite Cookies

🚀 Server Hardening

  • Helmet.js - Security Headers
  • Rate Limiting - הגבלת בקשות
  • Brute Force Protection
  • DDoS Mitigation

🔌 API Security Advanced

  • File Upload Security - אבטחת העלאת קבצים
  • File Type Validation - Magic Numbers
  • Path Traversal Prevention
  • API Key Management - ניהול מפתחות API
  • API Key Hashing & Storage
  • API Key Scopes & Permissions

📊 Session & Monitoring

  • Session Management - ניהול סשנים
  • Redis Session Store
  • Cookie Security (httpOnly, secure, sameSite)
  • Session Fixation Prevention
  • Security Logging - לוגים אבטחה
  • Audit Trails - מעקב פעולות
  • Attack Detection - זיהוי התקפות

📦 Dependency Security

  • npm audit - בדיקת פגיעויות
  • Dependency Management - ניהול תלויות
  • Supply Chain Attacks - התקפות שרשרת אספקה
  • Semantic Versioning - ניהול גרסאות
  • Automated Security Scanning

💡 טיפים למתחילים

💡 טיפ 1: אבטחה היא תהליך רב-שכבתי

אין פתרון אבטחה "קסם" אחד. השתמש במספר שכבות הגנה - אם אחת נכשלת, האחרות יגנו עליך.

💡 טיפ 2: השתמש בספריות מבוססות

אל תנסה לכתוב הצפנה בעצמך! השתמש ב-bcrypt, jsonwebtoken, Helmet וספריות מוכחות אחרות.

💡 טיפ 3: אימות בשרת הוא חובה

אימות בצד הלקוח (JavaScript בדפדפן) הוא רק ל-UX. תמיד אמת בשרת!

💡 טיפ 4: עדכן תלויות באופן קבוע

הרץ npm audit באופן קבוע ותקן פגיעויות אבטחה:

npm audit
npm audit fix

💡 טיפ 5: למד מטעויות של אחרים

קרא על פריצות אבטחה אמיתיות ב-OWASP Top 10 והבן מה השתבש.

⚠️ אזהרה: אל תסמוך על "Security through obscurity"

הסתרת קוד או מידע לא מחליפה אבטחה אמיתית. תמיד נהג כאילו התוקף יודע הכל.


🔗 משאבים נוספים

📚 תיעוד רשמי:

🛠️ כלים שימושיים:

  • npm audit - בדיקת פגיעויות בתלויות
  • Snyk - סריקת אבטחה מתקדמת
  • JWT.io - debug וניתוח JWT tokens
  • SSL Labs - בדיקת תצורת HTTPS

📖 מדריכים נוספים:

🎥 סרטונים מומלצים:


🎓 פרויקט גמר מוצע

אחרי שתסיים את כל המדריכים, בנה אפליקציה מאובטחת מלאה שכוללת:

דרישות הפרויקט:

  1. מערכת אימות מלאה - רישום, התחברות, JWT
  2. הגנה מפני Injection - SQL/NoSQL, XSS, CSRF
  3. Rate Limiting - על login ו-API endpoints
  4. Security Headers - Helmet.js
  5. HTTPS - חיבור מוצפן
  6. Input Validation - על כל הקלט
  7. Environment Variables - ניהול סודות נכון

רעיונות לפרויקט:

  • 📝 מערכת ניהול משימות (Todo App) מאובטחת
  • 💬 אפליקציית צ'אט עם אימות
  • 🛒 חנות אינטרנט פשוטה עם סל קניות
  • 📚 מערכת ניהול ספרים/מאמרים

🤝 תרומה ועזרה

מצאת שגיאה? יש הצעה לשיפור? נשמח לשמוע!

  • פתח issue בפרויקט
  • צור Pull Request עם תיקון
  • שתף משוב עם המדריכים

📜 רישיון

חומר לימודי זה נכתב למטרות חינוכיות. השתמשו בחופשיות ולמדו בהצלחה!


בהצלחה בלימוד! 🎓 זכרו - אבטחה היא אחריות של כל מפתח! 🔒


📅 עודכן לאחרונה: ינואר 2026 👨‍💻 מתאים ל: Node.js 18+, Express 4+ 📊 נושאים בקורס: 18 נושאים (הורחב מ-13 נושאים)