এই পৃষ্ঠায় Google সিজন অফ ডক্সের জন্য গৃহীত প্রযুক্তিগত লেখার প্রকল্পের বিশদ বিবরণ রয়েছে৷
প্রকল্পের সারাংশ
- ওপেন সোর্স সংস্থা:
- OWASP ফাউন্ডেশন
- প্রযুক্তিগত লেখক:
- sshniro
- প্রকল্পের নাম:
- ZAP API ডকুমেন্টেশনের উন্নতি
- প্রকল্পের দৈর্ঘ্য:
- স্ট্যান্ডার্ড দৈর্ঘ্য (3 মাস)
প্রকল্পের বিবরণ
ZAP-এর একটি অত্যন্ত শক্তিশালী API রয়েছে যা আমাদের ডেস্কটপ ইন্টারফেসের মাধ্যমে যা সম্ভব প্রায় সবকিছু করতে দেয়। যাইহোক, কার্যকরভাবে APIs ব্যবহার করার জন্য, UI এর একটি ভাল বোঝার প্রয়োজন। এর কারণ হল বেশিরভাগ API সরাসরি ZA প্রক্সির ইউজার ইন্টারফেসের সাথে সম্পর্কযুক্ত। একটি ভাল-নথিভুক্ত API এবং ব্যবহার/ব্যবহার-কেস নথি APIগুলি চেষ্টা করার সময় এই বাধা অতিক্রম করতে সহায়তা করতে পারে।
বর্তমানে, API নথিগুলি স্বয়ংক্রিয়ভাবে তৈরি করা হয়, জড়িত পরামিতি সম্পর্কিত সামান্য তথ্য প্রদান করে এবং সম্প্রদায়কে API ডকুমেন্টেশনে অবদান রাখার জন্য কম সুযোগ দেয়৷ উপরন্তু, ZAP-এর ভিতরে ব্যবহৃত ওয়েব-ভিত্তিক UI (ডেস্কটপ সংস্করণ) এছাড়াও আহ্বানের জন্য স্বয়ংক্রিয়ভাবে তৈরি API তালিকা ব্যবহার করে। এই ওয়েব-ভিত্তিক API ইনভোকেশন UI কীভাবে API ব্যবহার করতে হয় এবং APIগুলি (যেমন- API ফলাফল) আহ্বান করার সময় কী আশা করা যায় সে সম্পর্কে খুব সীমিত তথ্য সরবরাহ করে। তাই এই প্রস্তাবে, আমি API এর নথিভুক্ত করার জন্য একটি নতুন পদ্ধতির পরামর্শ দিচ্ছি।
ওপেন এপিআই 3 স্পেসিফিকেশন সহ API নথিগুলি পুনরায় তৈরি করার ধারণা। ওপেন এপিআই ডেভেলপার, পরীক্ষক এবং ডেভ-অপ-এর জন্য API তৈরি, রক্ষণাবেক্ষণ এবং পরীক্ষা করার জন্য একটি সাধারণ কাঠামো প্রদান করে। ZAP-এর জন্য সম্পূর্ণ ওপেন API স্পেকগুলি স্বয়ংক্রিয়ভাবে সোয়াগার ফাইল তৈরি করতে ব্যবহার করা যেতে পারে। ব্যবহারকারীদের একটি সমৃদ্ধ API টেস্টিং ক্লায়েন্ট প্রদান করতে সোয়াগার ফাইলগুলিকে ZAP এর ওয়েব অ্যাপ্লিকেশন (ডেস্কটপ অ্যাপ) UI-তে একত্রিত করা যেতে পারে।
API ডকুমেন্টেশন ছাড়াও, আমি মার্কডাউন ফর্ম্যাটে API ডক্স তৈরি করতে swaggerToMarkdown ( https://github.com/Swagger2Markup/swagger2markup ) রূপান্তরকারী ব্যবহার করার পরিকল্পনা করছি। এই পদ্ধতি (swagger-converter) সোয়াগার দ্বারা উত্পাদিত স্বয়ংক্রিয়-উত্পাদিত API ডকুমেন্টেশনের সাথে হাতে লেখা ডকুমেন্টেশনগুলিকে একত্রিত করে আপ-টু-ডেট RESTful API ডকুমেন্টেশন তৈরিকে সহজ করে। ফলাফল Github এর API ডকুমেন্টেশন অনুরূপ হবে. ( https://developer.github.com/v3/ )। এই হস্তলিখিত নথিতে উচ্চ-স্তরের নথি থাকবে যা ব্যাখ্যা করে যে কীভাবে একটি নির্দিষ্ট কাজ সম্পাদন করার জন্য এপিআই ব্যবহার করা উচিত। উদাহরণস্বরূপ, একটি স্পাইডার এপিআই স্ক্যান একটি দীর্ঘমেয়াদী কাজ এবং ব্যবহারকারীকে এপিআই-এর অবস্থা জানার জন্য ক্রমাগত এপিআই পোল করা উচিত। তাই এই উচ্চ-স্তরের নথিগুলি আলোচনা করবে কোন ক্রিয়া সম্পাদনের জন্য কোন APIগুলি ব্যবহার করা হবে এবং আরও পড়ার জন্য স্বয়ংক্রিয়ভাবে জেনারেট করা নথিগুলির দিকে নির্দেশ করবে৷
ZA প্রক্সিতে মোট 380+ API প্রয়োগ করা হয়েছে। আমি প্রাথমিকভাবে API-এর বর্ণনা, API-এর পরামিতি, সাফল্য, এবং ব্যর্থতার প্রতিক্রিয়া সংক্রান্ত তথ্য সহ সমস্ত API নথিভুক্ত করার প্রস্তাব করছি। ইতিমধ্যে একটি নমুনা POC করা হয়েছে, এবং অতিরিক্ত বিবরণ লিঙ্কযুক্ত প্রস্তাবে দেখা যেতে পারে।
তিন মাস মেয়াদকে তিনটি পর্বে ভাগ করা হবে। প্রথম পর্যায়টি সক্রিয় স্ক্যান, কোর এপিআই (150+) এর জন্য ওপেন API স্পেস তৈরি করবে। swagger ফাইল তৈরির সমান্তরালে, নির্দিষ্ট কাজ সম্পাদন করার জন্য APIs ব্যবহার করার জন্য প্রাসঙ্গিক ইউজ-কেস ডকুমেন্টেশন/ উচ্চ-স্তরের নথিও তৈরি করা হবে। ম্যানুয়াল কাজ মুছে ফেলার জন্য এটি সংস্করণ এবং স্বয়ংক্রিয়ভাবে তৈরি করা যেতে পারে এবং ফলস্বরূপ মার্কডাউন ফাইলগুলি ওয়েবপেজ হিসাবে হোস্ট করা যেতে পারে বা পিডিএফ হিসাবে রপ্তানি করা যেতে পারে।
দ্বিতীয় পর্বে স্পাইডার, স্বয়ংক্রিয় আপডেট, প্রসঙ্গ, স্থিতি, অনুসন্ধান API এবং মার্কডাউন ফাইলের মাধ্যমে প্রাসঙ্গিক ব্যবহারের কেস নিবন্ধগুলি নথিভুক্ত করা হবে।
চূড়ান্ত পর্যায়টি অনথিভুক্ত এপিআই এবং তাদের প্রাসঙ্গিক ব্যবহার-ক্ষেত্রগুলিকে কভার করবে। গত মাসে, আমি এমন ব্যবহারের ক্ষেত্রেও কভার করার পরিকল্পনা করছি যার জন্য একটি কাজ সম্পাদন করার জন্য একাধিক API উপাদানগুলিকে আহ্বান করতে হবে।