أساسيات الأمن وOWASP

OWASP Top 10 2025: A01-A05

5 دقيقة للقراءة

يعكس OWASP Top 10 2025 مشهد التهديدات الحالي مع تغييرات كبيرة بما في ذلك تركيز جديد على أمان سلسلة التوريد. دعنا نفحص أهم 5 ثغرات ستُختبر فيها.

A01:2025 - التحكم في الوصول المعطل

الترتيب: #1 (الأكثر حرجاً)

الثغرة الأكثر انتشاراً في تطبيقات الويب. تحدث عندما يمكن للمستخدمين التصرف خارج الأذونات المقصودة.

الأنماط الشائعة

النمطالوصفمثال
IDORمرجع كائن مباشر غير آمن/api/user/123 متاح بدون تفويض
تصعيد الصلاحياتالمستخدم يحصل على وظائف المسؤولتغيير الدور في حقل نموذج مخفي
اجتياز المسارالوصول لملفات مقيدة../../etc/passwd
فقدان التحكم في الوصول على مستوى الوظيفةنقاط نهاية المسؤول مكشوفة/admin/deleteUser بدون فحص المصادقة

مراجعة كود المقابلة

# كود معرض للخطر - اعثر على المشاكل
@app.route('/api/documents/<doc_id>')
def get_document(doc_id):
    document = Document.query.get(doc_id)  # المشكلة 1: لا فحص تفويض
    return jsonify(document.to_dict())

# النسخة الآمنة
@app.route('/api/documents/<doc_id>')
@login_required
def get_document(doc_id):
    document = Document.query.get_or_404(doc_id)
    if document.owner_id != current_user.id:  # فحص التفويض
        abort(403)
    return jsonify(document.to_dict())

A02:2025 - سوء التكوين الأمني

الترتيب: #2 (صعد من #5 في 2021)

سوء التكوين أكثر انتشاراً من أي وقت مضى بسبب تعقيد السحابة.

سوء التكوين الشائع

  • بيانات الاعتماد الافتراضية لم تتغير
  • ميزات غير ضرورية مُفعّلة
  • رسائل الخطأ تكشف تتبعات المكدس
  • رؤوس الأمان مفقودة
  • حاويات S3 مضبوطة كعامة
  • سياسات CORS متساهلة جداً

سيناريو المقابلة

السؤال: "راجع هذه الاستجابة. ما رؤوس الأمان المفقودة؟"

HTTP/1.1 200 OK
Content-Type: text/html
Server: Apache/2.4.41

<html>...

الإجابة: رؤوس حرجة مفقودة:

  • Strict-Transport-Security (HSTS)
  • X-Content-Type-Options: nosniff
  • X-Frame-Options: DENY
  • Content-Security-Policy
  • Referrer-Policy (موصى به؛ X-XSS-Protection مهجور وتم تعطيله في المتصفحات الحديثة)

A03:2025 - فشل سلسلة توريد البرمجيات

الترتيب: #3 (جديد - توسيع من المكونات المعرضة للخطر)

إضافة رئيسية في 2025 تعكس هجمات مثل SolarWinds وLog4Shell.

نواقل الهجوم

النوعالوصفمثال
ارتباك التبعياتأسماء الحزم الداخلية مختطفةحزمة npm خبيثة باسم داخلي
التقليد الإملائيأسماء حزم متشابهةlodash مقابل 1odash
المشرفون المخترقونحزمة شرعية مُحدّثة بشكل خبيثحادثة Event-stream
هجمات خط البناءنظام CI/CD مخترقاختراق Codecov

الدفاعات

# مثال: قفل التبعيات والتحقق من السلامة
# package-lock.json (npm) أو requirements.txt مع التجزئات
dependencies:
  lodash:
    version: "4.17.21"
    integrity: "sha512-v2kDE..."  # التحقق من التجزئة

الأدوات: Snyk، Dependabot، OWASP Dependency-Check، npm audit

A04:2025 - الفشل التشفيري

الترتيب: #4 (كان #2 في 2021)

فشل في التشفير يؤدي إلى كشف البيانات الحساسة.

حالات الفشل الشائعة

الفشلالتأثيرالإصلاح
خوارزميات ضعيفةMD5، SHA1 لكلمات المروراستخدم bcrypt، Argon2
الأسرار المشفرةالمفاتيح في الكود المصدرياستخدم مدير الأسرار
التشفير المفقودالبيانات تُنقل بنص واضحTLS 1.3 في كل مكان
إدارة مفاتيح غير صحيحةالمفاتيح مخزنة مع البياناتHSM، تخزين مفاتيح منفصل

سؤال المقابلة

س: "كيف ستخزن كلمات مرور المستخدمين بشكل آمن؟"

إجابة قوية:

import bcrypt

def hash_password(password: str) -> bytes:
    # توليد الملح والتجزئة في خطوة واحدة
    # bcrypt يتعامل تلقائياً مع تخزين الملح
    salt = bcrypt.gensalt(rounds=12)  # عامل التكلفة 12
    return bcrypt.hashpw(password.encode(), salt)

def verify_password(password: str, hashed: bytes) -> bool:
    return bcrypt.checkpw(password.encode(), hashed)

النقاط الرئيسية:

  • لا تستخدم أبداً MD5/SHA1 لكلمات المرور
  • استخدم خوارزميات تكيفية (bcrypt، Argon2، scrypt)
  • عامل التكلفة يجب أن يستغرق ~100 مللي ثانية للحساب

A05:2025 - الحقن

الترتيب: #5 (كان #3 في 2021)

بيانات غير موثوقة تُرسل إلى مفسر كجزء من أمر أو استعلام.

أنواع الحقن

النوعالهدفمثال
حقن SQLقاعدة البيانات' OR '1'='1
حقن الأوامرصدفة نظام التشغيل; rm -rf /
حقن LDAPخدمات الدليل`)(uid=))(
XSSالمتصفح<script>alert(1)</script>

الدفاع: الاستعلامات المُعلمة

# معرض للخطر - تسلسل السلاسل
query = f"SELECT * FROM users WHERE id = {user_id}"

# آمن - استعلام مُعلم
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

واقع المقابلة: سيُطلب منك تحديد ثغرات الحقن في الكود. تدرب على التعرف على الأنماط حيث تتدفق مدخلات المستخدم إلى مصارف خطرة.

في الدرس التالي، سنغطي A06-A10 وOWASP LLM Top 10 لأدوار أمان الذكاء الاصطناعي. :::

مراجعة سريعة: كيف تجد هذا الدرس؟

اختبار

الوحدة 2: أساسيات الأمن وOWASP

خذ الاختبار
نشرة أسبوعية مجانية

ابقَ على مسار النيرد

بريد واحد أسبوعياً — دورات، مقالات معمّقة، أدوات، وتجارب ذكاء اصطناعي.

بدون إزعاج. إلغاء الاشتراك في أي وقت.