استخدم قائمة فحص أمان Claude Code لإجراء فحوص سريعة ومحددة على المصادقة، التحقق من المدخلات، معالجة الأسرار، وأسطح الحقن في تطبيقات الويب.

فحص الأمان الخفيف هو مراجعة سريعة (غالبًا 30–60 دقيقة) تهدف لالتقاط المشاكل الواضحة وعالية التأثير قبل النشر. ليس بديلاً عن تدقيق كامل. اعتبره جولة تفقد سلامة: تمسح المسارات التي تفشل غالبًا في التطبيقات الحقيقية وتبحث عن دليل واقعي، ليس افتراضات.
تركّز هذه القائمة من Claude Code على المجالات التي تنكسر غالبًا في تطبيقات الويب اليومية:
لا تحاول إثبات عدم وجود أخطاء، ولا تصور خصوم تهديد معقدين، ولا تحل محل اختبار الاختراق.
"النتائج الملموسة" تعني أن كل مشكلة تسجلها تحتوي على دليل يمكن للمطوّر التعامل معه فورًا. لكل نتيجة، التقط:
الذكاء الاصطناعي مساعد، ليس سلطة. استخدمه للبحث، التلخيص، واقتراح اختبارات. ثم تحقق بقراءة الشيفرة وعند الإمكان إعادة الإنتاج بطلب حقيقي. إذا لم يستطع النموذج الإشارة لمواقع وخطوات محددة، اعتبر الادعاء غير مثبت.
لا يعمل المراجعة السريعة إلا إن قَصرت الهدف. قبل أن تطلب من Claude Code فحص أي شيء، قرّر ماذا تريد إثبات اليوم وما الذي لن تفحصه.
ابدأ بمسار مستخدم واحد إلى ثلاثة حيث تكون الأخطاء مكلفة ماديًا، تكشف بيانات، أو تمنح صلاحيات. مرشّحون جيدون: تسجيل الدخول، إعادة تعيين كلمة المرور، إتمام الدفع، وشاشات تحرير المسؤول.
بعدها، سمّ الأصول التي يجب حمايتها بدقة: حسابات المستخدمين، إجراءات الدفع، البيانات الشخصية، عمليات خاصة بالمسؤول فقط.
ثم اكتب افتراضات التهديدات بكلمات بسيطة. هل تدافع ضد مستخدم فضولي ينقر، مهاجم خارجي به سكربتات، أم داخلي لديه بعض الوصول؟ إجابتك تغير معنى "جيد بما يكفي".
أخيرًا، عرّف نجاح وفشل حتى تنتهي المراجعة بنتائج قابلة للتنفيذ وليس بانطباعات. قواعد بسيطة تعمل جيدًا:
إن لم تستطع وصف شكل الفشل، فالنطاق لا يزال غامضًا.
لا يعمل الفحص إلا إذا كان النموذج ينظر للأماكن الصحيحة. اجمع حزمة صغيرة من الشيفرة والملاحظات حتى تنتج المراجعة دليلاً، لا تخمينًا.
ابدأ بمشاركة مسار الأهمية الأمنية: نقاط دخول الطلب والشيفرة التي تقرر من هو المستخدم وماذا يمكنه فعل. أدرج ما يكفي من الشيفرة المحيطة لتظهر كيف يتدفّق البيانات.
حزمة عملية عادة تضم:
أضف بضعة أسطر من ملاحظات البيئة لتوضيح الافتراضات: جلسة مقابل JWT، أين تُخزن التوكنات (كوكي أو هيدر)، سلوك البروكسي العكسي أو بوابة API، العمال/المهام المجدولة، وأي نقاط نهاية "داخلية فقط".
قبل مطاردة الأخطاء، اطلب جردًا: نقاط الدخول، نقاط النهاية المميزة، ومخازن البيانات المتأثرة. هذا يمنع إغفال السطوح.
اتفق أيضًا على صيغة إخراج تُجبر على نتائج ملموسة. جدول بسيط يعمل جيدًا: النتيجة، الشدة، نقطة النهاية/الملف المتأثر، الدليل (مقتطف أو نطاق أسطر دقيق)، سيناريو الاستغلال، اقتراح الإصلاح.
حدد الوقت:
الهدف ليس تغطية كاملة. إنه مجموعة صغيرة من النتائج القابلة للاختبار.
ابقَ التطبيق مفتوحًا أثناء القراءة. انقر عبر الواجهة وراقب الطلبات التي تُرسل. يجب أن تشير الملاحظات إلى نقاط نهاية محددة، معلمات، ومصادر بيانات.
سير عمل يناسب جلسة واحدة:
عادة مفيدة: لكل "يبدو جيدًا" اكتب ما ستفعله لكسره. إن لم تستطع وصف محاولة كسر، فأنت لم تتحقق كفاية.
المصادقة هي المكان الذي يقرر فيه التطبيق: "هذا الطلب يعود لهذا الشخص". فحص سريع لا يعني قراءة كل سطر. يعني العثور على المكان الذي تُنشأ أو تُقبل فيه الهوية، ثم فحص الاختصارات ومسارات الفشل.
عثر على حد الثقة: أين تُنشأ الهوية أو تُقبل أول مرة؟ قد تكون كوكي جلسة، توكن JWT، مفتاح API، أو mTLS على الحافة. اطلب من Claude Code الإشارة إلى الملف والدالة التي تحوّل "مجهول" إلى معرّف مستخدم، وذكر كل مسار آخر يمكنه فعل الشيء نفسه.
فحوص مصادقة تستحق المسح:
مثال عملي: إن كانت رسائل إعادة الضبط ترجع "الحساب غير موجود" فهذا يشكل مشكلة تعداد سريعة. حتى مع رسالة عامة، اختلاف التوقيت قد يكشف نفس المعلومة—فتفقّد توقيت الاستجابة أيضًا.
التفويض يسبب أكبر ضرر عندما يكون خاطئًا: "هل يُسمح لهذا المستخدم بهذا الإجراء على هذا المورد بالذات؟" فحص سريع يجب أن يحاول كسر هذا الافتراض عمدًا.
اكتب الأدوار والصلاحيات بلغة بسيطة:
ثم تحقق أن كل إجراء حساس يفرض التفويض على الخادم، وليس فقط في الواجهة. الأزرار المخفية أو طرق الحظر في العميل لا تمنع استدعاءات API المباشرة.
فحص سريع عادةً يكشف مشاكل حقيقية:
الرائحة الكلاسيكية لـ IDOR بسيطة: طلب مثل GET /projects/{id} حيث {id} قابل للتحكم من المستخدم، والخادم يحمله دون التحقق من أنه يخص المستخدم أو المستأجر الحالي.
مطالبة تجبر إجابة حقيقية:
"بالنسبة لهذه النقطة النهاية، اعرض الشيفرة الدقيقة التي تقرر الوصول، واذكر الشروط المحددة التي قد تسمح لمستخدم من orgId مختلفة بالوصول إليها. إن لم توجد، فسّر لماذا مع أسماء الملفات والدوال."
معظم مشاكل تطبيقات الويب السريعة تبدأ بثغرة: التطبيق يقبل مدخلات لم يتوقعها المطور. عامل "المدخل" كأي شيء يمكن لمستخدم أو نظام آخر التأثير فيه، حتى لو بدا غير ضار.
ابدأ بتسمية المدخلات لنقطة النهاية التي تفحصها:
يجب أن يحدث التحقق بالقرب من مكان دخول البيانات إلى التطبيق، ليس عميقًا في منطق الأعمال. افحص الأساسيات: النوع (سلسلة مقابل رقم)، الحد الأقصى للطول، مطلوب أم اختياري، والصيغة (بريد إلكتروني، UUID، تاريخ).
للقيم المعروفة مثل الأدوار، حالات، أو اتجاهات الفرز، فضّل قائمة سماح. أصعب لتجاوزها من "حظر بعض القيم السيئة".
افحص أيضًا التعامل مع الأخطاء. إذا رفض التطبيق مدخلاً، فلا تعكس القيمة الخام في الاستجابة، السجلات، أو الواجهة. هذا كيف تتحول أخطاء بسيطة في التحقق إلى تسريبات بيانات أو مساعدات للحقن.
خطة مصغّرة "مدخلات سيئة" لنقاط النهاية الخطرة (تسجيل الدخول، البحث، التحميل، إجراءات المسؤول):
مثال: باراميتر الفرز الذي يقبل أي سلسلة قد يتحوّل إلى شظية SQL لاحقًا. قائمة سماح مثل "date" أو "price" تمنع هذه الفئة من الأخطاء مبكرًا.
معظم المراجعات السريعة تجد مشاكل في نفس الأماكن: أي مكان يُفسّر فيه إدخال المستخدم ككود، استعلام، مسار، أو URL. هنا تصطاد لحظات "المدخل يعبر حد الثقة".
تتبّع البيانات من نقاط الدخول (باراميترات الاستعلام، الرؤوس، الكوكيز، التحميلات، نماذج المسؤول) إلى حيث تنتهي.
ابحث عن هذه الأنماط واطلب موقع نداء ومثال حمولة ملموس لكل منها:
ORDER BY ديناميكي، وبناة IN (...) التي تَجمَع قيم المستخدمراقب أيضًا إلغاء التسلسل وحقن القوالب. أي شيء يحلّل JSON أو YAML أو سلاسل قالب من المستخدم يمكن أن يخفي سلوكًا خطيرًا، خاصة عند دعم أنواع مخصصة أو تعابير أو عرض على الخادم.
إن قبلت ميزة URL أو اسم ملف أو نص منسق، افترض أنه قابل لسوء الاستخدام حتى تثبت العكس بمسارات الشيفرة والاختبارات.
مشاكل الأسرار عادة ما تكون صاخبة عندما تعرف أين تبحث. ركّز على أين تعيش الأسرار وأين تُنسخ عن غير قصد.
أماكن شائعة لظهور الأسرار:
ثم اجبر إجابة ملموسة: إن كان السر معرضًا اليوم، ما الذي سيحدث بعد ذلك؟ نظام جيد لديه مسار تدوير (مفتاح جديد)، إبطال (تعطيل المفتاح القديم)، وطريقة لإعادة النشر بسرعة. إن كانت الإجابة "سنغيره لاحقًا" فاعتبر ذلك نتيجة.
الحد الأدنى من الامتياز مفيد أيضًا. الحوادث تتفاقم لأن المفاتيح قوية جدًا. ابحث عن مستخدمي قواعد بيانات يمكنهم إسقاط الجداول، توكنات طرف ثالث تدير حسابات، أو مفاتيح مشتركة عبر البيئات. فضّل مفتاحًا لكل خدمة، لكل بيئة، بأقل مجموعة صلاحيات.
مطالبات فحص سريعة يمكنك لصقها في Claude Code:
أخيرًا، أكد الضوابط: امنع الأسرار من التحكم بالمصدر (فحوص قبل الالتزام/CI)، وتحقق أن النسخ الاحتياطية أو اللقطات لا تحتوي على بيانات اعتماد نصية صريحة. إن كانت منصتك تدعم اللقطات والتراجع، تحقق أن الأسرار تُحقن وقت التشغيل، لا تُخبَز داخل الصور المحفوظة.
المطالبات الغامضة تعطي إجابات غامضة. اجبر النموذج على الالتزام بدليل: مواقع دقيقة، تتبّع يمكنك اتباعه، تكرار يمكنك تشغيله، وما الذي يجعل الادعاء خطأ.
استخدم نمطًا واحدًا في كل مرة ثم اطلب مراجعة بعد تأكيد أو رفض التفاصيل.
إن بدا الإخراج غامضًا، حاصره:
"أجب فقط بـ: مسار الملف، اسم الدالة، السطر الخطر، وجملة واحدة عن التأثير."
نقاط تحديث الملف الشخصي غالبًا ما تخفي مشاكل تحكم بالوصول. هنا حالة صغيرة يمكنك تمريرها عبر هذه القائمة.
السيناريو: نقطة نهاية API تحدّث ملف المستخدم:
PATCH /api/profile?accountId=123 مع JSON مثل { "displayName": "Sam" }.
تطلب من Claude Code العثور على المعالج، تتبّع كيفية استخدام accountId، وإثبات إن كان الخادم يفرض الملكية.
ما يظهر غالبًا:
accountId من سلسلة الاستعلام ويحدّث ذلك الحساب دون التحقق أنه يطابق المستخدم المسجّل.displayName يُقصّر، لكن accountId لا يُتحقق أنه عدد صحيح."... WHERE account_id=" + accountId.كتابة جيدة تكون ملموسة:
accountId; SQL يُبنى من مدخل غير موثوقaccountId من العميل، استخدم معرّف الحساب من المستخدم المصادق على الخادم؛ استعمل استعلامات مُعلّمةaccountId غير الرقميبعد التصحيح، أعد الفحص سريعًا:
accountId مختلف وتأكد أنه يفشل.أسرع طريقة لتفوّت ثغرة هي الوثوق بما تفرضه الواجهة. زر مخفي أو معطّل ليس فحص صلاحية. إن قبل الخادم الطلب على أي حال، يمكن لأي أحد إعادة تشغيله مع معرّف مستخدم مختلف أو دور مختلف أو استدعاء API مباشر.
تفويتها الشائعة الأخرى هي طلب غامض. "قم بمراجعة أمنية" عادة ما يعطي تقريرًا عامًا. فحص سريع يحتاج نطاقًا ضيقًا (أي نقاط نهاية، أي أدوار، أي بيانات) وصيغة إخراج صارمة (اسم الملف، الدالة، السطر الخطر، تكرار بسيط).
ينطبق نفس القاعدة على مخرجات الذكاء الاصطناعي: لا تقبل ادعاءات بدون دلائل. إن لم تتضمن النتيجة موقعًا دقيقًا في الشيفرة وطريقة خطوة بخطوة لتشغيلها، اعتبرها غير مثبتة.
تظهر هذه الفخاخ مرارًا:
إن وجدت نفسك تضيف المزيد من الفلاتر بعد كل حافة جديدة، توقف. الإصلاح عادة أبكر وأبسط: تحقق من المدخلات عند الحدود، واجعل فحوص التفويض صريحة ومركزة حتى تستخدمها كل المسارات.
هذه لا تحل محل مراجعة كاملة، لكنها تلتقط أخطاء تسللت عندما يكون الجميع متعبًا. اجعلها مركزة على ما يمكنك إثبات بسرعة: طلب يمكنك إرساله، صفحة يمكنك تحميلها، أو سطر سجل يمكنك إيجاده.
خمسة فحوص سريعة عادةً مجدية:
دوّن أهم 3 إصلاحات يمكنك شحنها هذا الأسبوع، لا قائمة أمنيات. مثال: (1) أضف حد معدل لتسجيل الدخول وإعادة الضبط، (2) فرض فحوص ملكية على نقطة النهاية "get by id"، (3) تحديد طول المدخلات ورفض الأحرف غير المتوقعة لحقل البحث.
فحص سريع يؤتي ثماره فقط إن غيّر ما تُشحنه. عامل هذه القائمة كخطوة بناء صغيرة قابلة للتكرار، ليست مهمة إنقاذ لمرة واحدة.
حوّل كل نتيجة إلى عنصر في لوحة العمل يصعب إساءة فهمه:
اختر إيقاعًا يناسب مستوى المخاطر وحجم الفريق. للعديد من الفرق، كل إصدار هو الأفضل. إن كانت الإصدارات متكررة، قم بمراجعة 30–60 دقيقة شهريًا وفحص أقصر قبل الشحن.
سَهِّل التكرار بإنشاء حزمة مطالبات قابلة لإعادة الاستخدام ونموذج قائمة فحص. اجعل المطالبات مركزة على مخرجات ملموسة: عرض المسار، الحارس، الطلب الفاشل، والسلوك المتوقع. خزّن الحزمة حيث يعمل فريقك بالفعل حتى لا تُهمل.
إن بنيت التطبيقات عبر الدردشة، ادخل القائمة في التخطيط. أضف ملاحظة قصيرة "افتراضات أمنية" للمصادقة/التفويض، المدخلات، والأسرار، ثم نفّذ الفحص مباشرة بعد النسخة الأولى العاملة.
المنصات مثل Koder.ai (koder.ai) قد تناسب هذه العادة لأنها تتيح التكرار السريع مع نقاط مراجعة. استخدام اللقطات والتراجع حول التغييرات الخطرة يجعل من الأسهل شحن إصلاحات أمنية دون التوقف عندما يكسر تغيير ما سلوكًا.