الرئيسيةمن أناالدوراتالمدونةسوق الأوامرالمناهج والباقاتالشركاء

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • المناهج والباقات
  • سوق الأوامر
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالمناهجالمدونةالدخول
العودة لسوق الأوامر
مهارات وكلاءمهارات الوكلاء0 مرة نسخ

مهارة إزالة سر مسرّب من تاريخ Git (تدوير المفتاح ثم تطهير السجل)

مهارة تشغيل جاهزة لوكلاء الكود (Claude Code وCursor وCodex وAntigravity) تُنظّم الاستجابة الصحيحة عند تسريب سر — مفتاح API، رمز وصول، كلمة مرور قاعدة بيانات، أو شهادة خاصة — داخل مستودع Git. المشكلة التي تعالجها شائعة وخطيرة: يكتشف المطوّر أنه دفع (push) ملفًا يحوي سرًا، فيحذف السطر في commit جديد ويظن أن المشكلة انتهت، بينما السر يبقى في تاريخ الـ commits ويمكن استخراجه بأمر git واحد. تصحّح هذه المهارة الترتيب الذهني الخاطئ وتفرض المبدأ الأول: لحظة دفع السر إلى مستودع بعيد يصبح مكشوفًا، وقد نسخه آخرون أو حفظته المرايا والنسخ والكاش؛ لذلك الإصلاح الحقيقي هو تدوير المفتاح (إصدار مفتاح جديد) وإبطال القديم فورًا لدى الجهة المُصدِرة، قبل أي عملية تطهير للتاريخ. تختلف هذه المهارة عن مهارة مراجعة متغيرات البيئة (التي تضبط تنظيم الإعدادات وفصل server-only عن NEXT_PUBLIC قبل حدوث المشكلة) وعن قواعد حماية الأسرار من التسريب عبر المحتوى (حقن الأوامر): هدف هذه المهارة تحديدًا هو الاستجابة بعد وقوع التسريب في تاريخ Git وإزالته بشكل لا رجعة فيه. بعد تدوير المفتاح تنتقل المهارة إلى تطهير التاريخ عبر أداة موثوقة (git filter-repo هي الموصى بها رسميًا، أو BFG Repo-Cleaner للمستودعات الكبيرة) باستخدام استبدال النص (--replace-text) لإزالة القيمة الحساسة من كل الـ commits، أو إزالة مسار ملف كامل عندما يكون الملف بأسره سرًا؛ وتُحذّر من git filter-branch اليدوي لبطئه وخطورته. ثم دفع مُعاد للكتابة لكل الفروع والوسوم (git push --force --all و--tags) مع تنسيق إلزامي مع الفريق لأن النسخ المستنسخة القديمة تبقى تحمل السر ويجب إعادة استنساخها. وتوثّق المهارة أن التاريخ المُعاد كتابته على منصة مثل GitHub قد يظل مخبأً في الـ Pull Requests وواجهات المقارنة والكاش، فيبقى تدوير المفتاح هو خط الدفاع الحقيقي، مع إمكانية مراسلة دعم المنصة لتنظيف النسخ المخبأة. تختم بالتحقق أن السر لم يعد في أي commit، ومنع التكرار عبر فحص أسرار قبل الـ commit (gitleaks أو trufflehog كخطاف pre-commit)، وإضافة ملفات البيئة إلى .gitignore، وحفظ الأسرار في مدير أسرار أو متغيرات بيئة لا في الكود. مناسبة لأي مطوّر أو فريق يريد إجراء استجابة موحّدًا وسريعًا لتسريب سر، وقابلة للتحويل إلى SKILL.md داخل أدوات الوكيل.

جلسة استجابة منظّمة تبدأ بتأكيد تدوير المفتاح وإبطال القديم، ثم تحديد موضع السر في التاريخ، فتطهيره من كل الـ commits عبر git filter-repo أو BFG، ثم دفع مُعاد للكتابة لكل الفروع والوسوم مع تنسيق إعادة الاستنساخ، فتحقق بأن السر لم يعد في أي commit (grep يعيد 0)، وتنتهي بإجراءات منع التكرار — دون طباعة قيمة السر كاملة ودون اختراع نتائج خارج مخرجات git الفعلية.

Claude CodeCursorCodexAntigravityClaudeChatGPTGeminiagent skillgitsecurity response
معاينة ناتج: مهارة إزالة سر مسرّب من تاريخ Git (تدوير المفتاح ثم تطهير السجل)
المعاينة

الشكل المتوقع للناتج

المدخل: مفتاح AWS مسرّب في config.js عند commit a1c9f30، مستودع خاص بثلاثة مساهمين، الفرع main. 1) تدوير المفتاح: أنشئ مفتاح AWS جديدًا من IAM، حدّث الخدمات، ثم ألغِ المفتاح المسرّب — تم ✔ (هذا الإصلاح الحقيقي؛ التطهير التالي مكمّل). 2) التحديد: git log -p -S 'AKIA' --all ⇐ a1c9f30 · config.js · +const AWS_KEY = "AKIA...IBTZ". 3) التطهير: printf 'AKIA...IBTZ==>REDACTED\n' > secrets.txt ; git filter-repo --replace-text secrets.txt ⇐ أعاد كتابة 214 commit، استُبدل السر في 6. 4) الدفع: git push --force --all ثم git push --force --tags ⇐ + a1c9f30...9e3b7d2 main -> main (forced update). أُبلغ المساهمون بإعادة الاستنساخ. 5) التحقق: git log -p --all | grep -c 'AKIA' ⇐ 0 ✔ لم يعد السر في أي نسخة من التاريخ. 6) منع التكرار: أُضيف خطاف gitleaks قبل الـ commit، و.env إلى .gitignore، ونُقلت الأسرار إلى مدير أسرار. الخلاصة: المفتاح المسرّب أُلغي فعليًا وأُزيل من كامل تاريخ Git، مع حواجز تمنع تكرار التسريب.

جاري تجهيز الوصول

نتحقق من حسابك الحالي قبل عرض نسخة الأمر الكاملة.

مثال ناتج

المدخل: مفتاح AWS مسرّب في config.js عند commit a1c9f30، مستودع خاص بثلاثة مساهمين، الفرع main. 1) تدوير المفتاح: أنشئ مفتاح AWS جديدًا من IAM، حدّث الخدمات، ثم ألغِ المفتاح المسرّب — تم ✔ (هذا الإصلاح الحقيقي؛ التطهير التالي مكمّل). 2) التحديد: git log -p -S 'AKIA' --all ⇐ a1c9f30 · config.js · +const AWS_KEY = "AKIA...IBTZ". 3) التطهير: printf 'AKIA...IBTZ==>REDACTED\n' > secrets.txt ; git filter-repo --replace-text secrets.txt ⇐ أعاد كتابة 214 commit، استُبدل السر في 6. 4) الدفع: git push --force --all ثم git push --force --tags ⇐ + a1c9f30...9e3b7d2 main -> main (forced update). أُبلغ المساهمون بإعادة الاستنساخ. 5) التحقق: git log -p --all | grep -c 'AKIA' ⇐ 0 ✔ لم يعد السر في أي نسخة من التاريخ. 6) منع التكرار: أُضيف خطاف gitleaks قبل الـ commit، و.env إلى .gitignore، ونُقلت الأسرار إلى مدير أسرار. الخلاصة: المفتاح المسرّب أُلغي فعليًا وأُزيل من كامل تاريخ Git، مع حواجز تمنع تكرار التسريب.

اشتراك مستقل

‏299 ج.م.‏30 يوماشتراك سوق الأوامر الشهري‏2,499 ج.م.‏365 يوماشتراك سوق الأوامر السنوي