🔒 מבוא לאבטחת אפליקציות 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
בדיקת התקנה:¶
ידע מקדים מומלץ:¶
- ✅ JavaScript בסיסי (ES6+)
- ✅ Node.js יסודי
- ✅ Express.js בסיסי
- ✅ הבנת HTTP requests/responses
- ⚠️ ניסיון עם MongoDB (לחלק מהדוגמאות)
🚀 התקנה והפעלה¶
שלב 1: הורדת הקוד והתקנת תלויות¶
# נווט לתיקיית הדוגמאות
cd C:\Full-Stack\Security\introduction\examples
# התקן את כל התלויות
npm install
שלב 2: הגדרת משתני סביבה¶
העתק את קובץ התבנית ליצירת קובץ .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: בדיקת השרת¶
פתח דפדפן וגש ל:
📖 סדר לימוד מומלץ¶
🗓️ שבוע 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באופן קבוע ותקן פגיעויות אבטחה:💡 טיפ 5: למד מטעויות של אחרים
קרא על פריצות אבטחה אמיתיות ב-OWASP Top 10 והבן מה השתבש.
⚠️ אזהרה: אל תסמוך על "Security through obscurity"
הסתרת קוד או מידע לא מחליפה אבטחה אמיתית. תמיד נהג כאילו התוקף יודע הכל.
🔗 משאבים נוספים¶
📚 תיעוד רשמי:¶
- OWASP Top 10 - עשר הפגיעויות השכיחות ביותר
- MDN Web Security - מדריך אבטחת Web מקיף
- Node.js Security Best Practices - המלצות אבטחה ל-Node.js
- Express.js Security - אבטחה ב-Express
🛠️ כלים שימושיים:¶
- npm audit - בדיקת פגיעויות בתלויות
- Snyk - סריקת אבטחה מתקדמת
- JWT.io - debug וניתוח JWT tokens
- SSL Labs - בדיקת תצורת HTTPS
📖 מדריכים נוספים:¶
- PortSwigger Web Security Academy - מדריכים אינטראקטיביים
- Hack The Box - תרגול אבטחה מעשי
- OWASP Cheat Sheet Series - דפי עזר לנושאי אבטחה
🎥 סרטונים מומלצים:¶
🎓 פרויקט גמר מוצע¶
אחרי שתסיים את כל המדריכים, בנה אפליקציה מאובטחת מלאה שכוללת:
דרישות הפרויקט:¶
- ✅ מערכת אימות מלאה - רישום, התחברות, JWT
- ✅ הגנה מפני Injection - SQL/NoSQL, XSS, CSRF
- ✅ Rate Limiting - על login ו-API endpoints
- ✅ Security Headers - Helmet.js
- ✅ HTTPS - חיבור מוצפן
- ✅ Input Validation - על כל הקלט
- ✅ Environment Variables - ניהול סודות נכון
רעיונות לפרויקט:¶
- 📝 מערכת ניהול משימות (Todo App) מאובטחת
- 💬 אפליקציית צ'אט עם אימות
- 🛒 חנות אינטרנט פשוטה עם סל קניות
- 📚 מערכת ניהול ספרים/מאמרים
🤝 תרומה ועזרה¶
מצאת שגיאה? יש הצעה לשיפור? נשמח לשמוע!
- פתח issue בפרויקט
- צור Pull Request עם תיקון
- שתף משוב עם המדריכים
📜 רישיון¶
חומר לימודי זה נכתב למטרות חינוכיות. השתמשו בחופשיות ולמדו בהצלחה!
בהצלחה בלימוד! 🎓 זכרו - אבטחה היא אחריות של כל מפתח! 🔒
📅 עודכן לאחרונה: ינואר 2026 👨💻 מתאים ל: Node.js 18+, Express 4+ 📊 נושאים בקורס: 18 נושאים (הורחב מ-13 נושאים)