inspection 3
inspection 3

@aljabr_wd

27 تغريدة 5 قراءة Feb 16, 2024
الجزء الثاني من اهم المهارات التي تحتاجها لاختراق APIs ذا بيكون تلخيص لكتاب HACKING APIs
معظم ما يعرفه المستخدم العادي عن تطبيق الويب يأتي من الواجهة الرسومية (GUI).
واجهة البرمجة التطبيقية (APIs) تقوم بالعديد من العمليات في الخلفية ،دعنا "تعرّف على الأدوات والتسجيلات المعتمدة في توثيق واجهات برمجة التطبيقات (APIs)، بما في ذلك JSON، XML، YAML، واستخدام المواصفات
Web APIs تعتمد على بروتوكول HTTP لتيسير العلاقة بين العميل والخادم بين مضيف الـ API (مقدم الخدمة) والنظام أو الشخص الذي يقدم طلب API (المستهلك).
المستهلك للـ API يمكنه طلب الموارد من نقطة نهاية API، وهي عبارة عن عنوان URL للتفاعل مع جزء من الـ API.
يتمثل كل نقطة نهاية API في URL مختلفة تمثل جزءًا مختلفًا من الـ API.
الموارد هي البيانات المطلوبة، حيث يمكن أن تكون الموارد مفردة أو مجموعة.
عندما يطلب المستهلك موردًا من مقدم الخدمة، يمر الطلب من خلال بوابة الـ API التي تعمل كمكون لإدارة الـ API وتعمل كنقطة دخول لتطبيق الويب.
بوابة الـ API تقوم بتصفية الطلبات السيئة ومراقبة حركة المرور الواردة وتوجيه كل طلب إلى الخدمة أو الميكروسيرفس المناسب.
بوابة الـ API يمكنها أيضًا التعامل مع ضوابط الأمان مثل المصادقة والتفويض والتشفير أثناء الانتقال باستخدام SSL وتحديد معدل الطلبات وتوزيع البايلود.
Microservice Definition and Functionality:Microservices هي أجزاء م mod محددة من تطبيق الويب تتولى وظيفة معينة.تستخدم Microservices الـ لنقل البيانات وتشغيل الإجراءات
Backend Design and Architecture: يمكن أن يكون تصميم تطبيق الويب الخلفي متماسكًا (monolithic) حيث تكون كل الخدمات موجودة داخل تطبيق واحد، أو يمكن أن يكون لها بنية ميكروسيرفس (microservice architecture)، حيث تعمل كل خدمة كتطبيق منفصل ذاتي.
API Contracts and Documentation: المستهلك للـ API لا يرى تصميم الخلفية، بل يرى نقاط النهاية التي يمكنه التفاعل معها والموارد التي يمكنه الوصول إليها. توضح عقود الـ API كيفية استخدام الـ API وسلوكه المتوقع.
أنواع الـ APIs:تأتي الـ APIs في أنواع قياسية مختلفة، وتختلف كل نوع في قواعده ووظائفه وغرضه. عادةً ما يستخدم نوع واحد من الـ API في كل API معين، لكن قد تواجه نقاط نهاية لا تتطابق مع التنسيق والهيكل الخاص بالآخرين أو لا تتطابق مع نوع قياسي على الإطلاق.
أنواع الـ APIs الرئيسية:يتناول هذا القسم نوعي الـ APIs الرئيسيين الذين سنركز عليهما:RESTful APIsوGraphQL.
RESTful APIs تعتمد APIs الـ RESTful على مجموعة من القيود المعمارية لتطبيقات تتواصل باستخدام طرق HTT يمكن أن تختلف كل RESTful API عن الآخر في الطرق الممكّنة بعد CRUD ومتطلبات
طلب واستجابة RESTful API:يوضح القسم طلب RESTful API النموذجي واستجابته، حيث يتم إرسال طلب HTTP GET للاستعلام عن موجودات المخزن للوسائد، ويتم الرد بـ JSON يوضح معلومات عن العنصر.
-رؤوس الـ API الشائعة:يوضح القسم بعض رؤوس الـ API الشائعة التي يجب أن تصبح على دراية بها.
تفويض (Authorization(headers: يستخدم ترويسات التفويض لتمرير رمز أو بيانات اعتماد إلى موفر الـ API،وتأخذ صيغة `Authorization:<type><token/credentials>`،حيث يمكن أن يكون نوع التفويض Basic(يستخدم تشفير Base64 للبيانات)،أوBearer(يستخدم رمز API)،أو AWS-HMAC-SHA256
نوع المحتوى (Content Type) headers: تستخدم ترويسات نوع المحتوى للإشارة إلى نوع الوسائط المرسلة، وتختلف هذه الترويسات عن ترويسات القبول (Accept) التي تحدد نوع الوسائط التي ترغب في استقبالها.
GraphQL هو اختصار لـ Graph Query Language، وهو مواصفة للـ APIs تسمح للعملاء بتحديد هيكل البيانات التي يرغبون في طلبها من الخادم. يعتبر GraphQL RESTful، حيث يتبع ستة قيود من قيود APIs REST. ومع ذلك، يتبع GraphQL أيضًا نهجًا محوريًا للاستعلام
لأنه يتم تنظيمه بشكل مشابه للغة استعلام قاعدة البيانات مثل SQL.
GraphQL يستخدم بنية بيانات الرسوم البيانية(Graph data structure) لتخزين الموارد.
يتم الوصول إلى GraphQL API عادةً عن طريق طلب POST يحتوي على معلمات الاستعلام كجزء من الجسم، مثل الاستعلام التالي:
يتيح للعميل الحصول على البيانات المطلوبة بدقة، بدلاً من استقبال كل البيانات التي يعيدها الخادم من نقطة النهاية، بما في ذلك البيانات غير الضرورية.
- تستخدم GraphQL عمليات Query و Mutation و Subscription ضمن طلبات POST للتفاعل مع APIs GraphQL.
مواصفات الـ API (API specifications): هي إطارات عمل تساعد المؤسسات على تصميم الـ APIs وإنشاء وثائق قراءة بشرية متسقة تلقائيًا، مما يساعد المطورين والمستخدمين على معرفة ما يمكن توقعه بشأن وظائف الـ API ونتائجه.
أهمية المواصفات:تساهم المواصفات في توحيد الوثائق وجعلها مفيدة للمطورين والمستخدمين،حيث يمكن للمستهلك برمجة تطبيقه لاستيعاب مواصفات مختلفة والتفاعل بسهولة مع أي API يستخدم تلك المواصفات.
مواصفة OpenAPI (OAS):هي واحدة من أبرز المواصفات للـ APIs الـ RESTful.تساعد OAS في تنظيم وإدارة الـ APIs عن طريق وصف النقاط النهائية والموارد والعمليات ومتطلبات المصادقة والتفويض.
لغة نمذجة الـ API الـ RESTful (RAML): RAML توليد توثيق متسق للـ APIs. RAML مواصفة مفتوحة مع YAML. هدف RAML، مثل OAS، إلى وثائق وتصميم وبناء واختبار الـ APIs الـ REST.
استخدام Postman: سنستخدم Postman لاستيراد المواصفات والوصول إلى قدرات APIs المؤسسة.
JSON (JavaScript Object Notation): هو تنسيق تبادل البيانات الرئيسي الذي سنستخدمه في هذا الكتاب، حيث يتم استخدامه على نطاق واسع للـ APIs. ينظم JSON البيانات بطريقة يمكن قراءتها بسهولة من قبل البشر ومعالجتها بسهولة من قبل التطبيقات
تمثيل الكائنات في JSON:يتم تمثيل الكائنات في JSON كأزواج مفاتيح/قيم مفصولة بفواصل داخل أقواس متعرجة.على سبيل المثال:
أنواع JSON: يتضمن JSON أنواع بيانات مقبولة مثل السلاسل النصية، الأرقام، القيم المنطقية، قيمة null، مصفوفة، أو كائن آخر.
عدم السماح بالتعليقات المضمنة في JSON: لا يسمح JSON بالتعليقات المضمنة، لذا يجب أن تكون أي نوع من التواصلات المشابهة للتعليقات على شكل زوج مفتاح/قيمة
تنسيق XML (Extensible Markup Language):يعتبر XML تنسيقًا يستخدم لتبادل البيانات وقد تم استخدامه لفترة طويلة. يتميز XML بالعلامات الوصفية التي يستخدمها لتغليف البيانات.
-استخدام XML في الـ APIs: يمكن للـ APIs الـ REST استخدام XML، ولكن يرتبط عادة بشكل أكبر مع الـ APIs الـ SOAP.
صيغة XML:يبدأ XML دائمًا بـ prolog، الذي يحتوي على معلومات حول إصدار XML والترميز المستخدم.
-العناصر في XML: تعتبر العناصر هي الأجزاء الأساسية في XML،حيث تتكون من العلامات والمعلومات المحيطة بها. يجب أن يحتوي XML على عنصر رئيسي (root element) ويمكن أن يحتوي على عناصر فرعية.
XML يُستخدم على نطاق واسع في تبادل البيانات وتوثيق هياكل الـ APIs، وفهمه سيُساعدك في التعرف على أنواع الـ APIs وطرق تعاملها مع البيانات
تنسيق YAML (YAML Ain’t Markup Language) يُعتبر YAML شكلًا خفيفًا لتبادل البيانات في الـ APIs، وهو اختصار لتعبير مركب يعني "YAML Ain’t Markup Language". تم إنشاؤه كتنسيق يُمكن قراءته بسهولة من قبل الإنسان والحاسوب لتبادل البيانات.
صيغة YAML:تحتوي مستندات YAML على أزواج مفتاح/قيمة، ويمكن أن تكون القيمة أيًا من أنواع بيانات YAML، التي تشمل الأرقام، السلاسل النصية، القيم المنطقية، القيم الفارغة (null)، والتسلسلات. على سبيل المثال، يمكنك الاطلاع على البيانات التالية بصيغة YAML:
قراءة YAML:يُلاحظ أن YAML أكثر قراءة من JSON، حيث تبدأ مستندات YAML بعلامة "---" وتنتهي بعلامة "..." بدلاً من الأقواس المتعرجة. بالإضافة إلى ذلك، فإن الاقتباسات حول السلاسل النصية اختيارية في YAML، ولا يلزم ترميز عناوين URL بشرطات معكوفة.
أهمية المصادقة والتفويض:تسمح الـ APIs بالوصول العام للمستهلكين دون مصادقة،ولكن عندما تسمح الـ APIبالوصول إلى بيانات مملوكة أو حساسة،فستستخدم أشكالًا معينة من المصادقة والتفويض. يجب أن يقوم عملية المصادقة في الـ API بالتحقق من هوية المستخدمين وأن يمنحهم التفويض للوصول إلى البيانات
المصادقة البسيطة (Basic Authentication) المصادقة البسيطة في الـ API هي أبسط أشكال المصادقة حيث يتم تضمين اسم المستخدم وكلمة المرور في رأس الطلب أو جسمه.يمكن تمريرهما بنص صريح مثل username:password،أو ترميزهما بـ base64. الترميز ليس تشفيرًا، ويمكن فك تشفيره بسهولة.
مفاتيح الواجهة البرمجية(API keys)هي سلاسل فريدة تولدها مزودات واجهة البرمجة لتخويل الوصول للمستخدمين المعتمدين. بمجرد الحصول عليها،يمكن للمستخدمين تضمين مفتاح الواجهة البرمجية في الطلبات كما يحدده المزود. يتم عادة تمرير المفتاح في معلمات سلسلة الاستعلام،أو فيhttp header أو ككوكي.
JSON Web Token (JWT) هو نوع من الرموز المستخدمة عادة في المصادقة على أساس الرموز في واجهة برمجة التطبيقات (API) يتم استخدامه كالتالي:يتم المصادقة على المستهلك لواجهة برمجة التطبيقات لمزود واجهة برمجة التطبيقات بواسطة اسم المستخدم وكلمة المرور.
OAuth 2.0 هو معيار للتفويض يسمح لخدمات مختلفة بالوصول إلى بيانات بعضها البعض، غالبًا باستخدام واجهات برمجة التطبيقات (APIs) لتيسير التواصل بين الخدمات.
@0xVoka التشفير لاحقنا لاحقنا

جاري تحميل الاقتراحات...