অনিরাপদ API ব্যবহার

OWASP বিভাগ: MASVS-প্ল্যাটফর্ম: প্ল্যাটফর্ম ইন্টারঅ্যাকশন

ওভারভিউ

অনেক মোবাইল অ্যাপ্লিকেশন বৈশিষ্ট্য প্রদান করতে একটি বহিরাগত API ব্যবহার করে। ঐতিহ্যগতভাবে, একটি স্ট্যাটিক টোকেন বা কী ব্যবহার করা হয় পরিষেবার সাথে সংযোগকারী অ্যাপ্লিকেশনটিকে প্রমাণীকরণ করতে।

যাইহোক, একটি ক্লায়েন্ট-সার্ভার সেটিং (বা মোবাইল অ্যাপ এবং API)-এর প্রেক্ষাপটে - একটি স্ট্যাটিক কী ব্যবহার করা সাধারণত সংবেদনশীল ডেটা বা পরিষেবাগুলি অ্যাক্সেস করার জন্য একটি নিরাপদ প্রমাণীকরণ পদ্ধতি হিসাবে বিবেচিত হয় না। অভ্যন্তরীণ অবকাঠামোর বিপরীতে, যে কেউ একটি বহিরাগত API অ্যাক্সেস করতে পারে এবং এই কীটিতে অ্যাক্সেস থাকলে পরিষেবাটির অপব্যবহার করতে পারে।

উদাহরণ স্বরূপ, একটি স্ট্যাটিক কীকে হয় অ্যাপ্লিকেশন থেকে রিভার্স ইঞ্জিনিয়ার করা বা একটি মোবাইল অ্যাপ্লিকেশন যখন এক্সটার্নাল API-এর সাথে যোগাযোগ করে তখন বাধা দেওয়া সম্ভব। এই স্ট্যাটিক কীটি অ্যাপ্লিকেশনের মধ্যে হার্ড-কোডেড হওয়ার সম্ভাবনাও বেশি।

পর্যাপ্ত সুরক্ষিত প্রমাণীকরণ এবং অ্যাক্সেস নিয়ন্ত্রণ ব্যবহার করা না হলে API ডেটা এবং পরিষেবাগুলির ঝুঁকি দেখা দেয়।

একটি স্ট্যাটিক কী ব্যবহার করার সময়, কোনো সময় বিধিনিষেধ ছাড়াই (ইন্টারসেপ্টেড বা রিভার্স ইঞ্জিনিয়ারড) কী ব্যবহার করে অনুরোধ রিপ্লে করে বা নতুন অনুরোধ তৈরি করে API ব্যবহার করা যেতে পারে।

প্রভাব

যদি একজন বিকাশকারী একটি AI বা ML API পরিষেবার জন্য অর্থ প্রদান করে, তবে আক্রমণকারীর পক্ষে এই কী চুরি করা এবং তাদের পরিষেবার উপর ঋণ চালানো বা জাল সামগ্রী তৈরি করতে এটি ব্যবহার করা তুলনামূলকভাবে সহজ হবে৷

API-এ সংরক্ষিত যেকোনো ব্যবহারকারীর ডেটা, ফাইল বা PII অবাধে পাওয়া যাবে, যা ক্ষতিকারক ফাঁসের দিকে পরিচালিত করবে।

একজন আক্রমণকারী জালিয়াতি পরিচালনা করতে, পরিষেবাগুলি পুনঃনির্দেশ করতে এবং, বিরল ক্ষেত্রে, সার্ভারের সম্পূর্ণ নিয়ন্ত্রণ পেতে এই অ্যাক্সেস ব্যবহার করতে পারে।

প্রশমন

স্টেটফুল API

যদি অ্যাপ্লিকেশনটি ব্যবহারকারীর লগইন প্রদান করে বা ব্যবহারকারীর সেশনগুলি ট্র্যাক করার ক্ষমতা রাখে, তাহলে আমরা ডেভেলপারদের তাদের অ্যাপের সাথে রাষ্ট্রীয় সংহতকরণের জন্য Google ক্লাউডের মতো একটি API পরিষেবা ব্যবহার করার পরামর্শ দিই।

উপরন্তু, API পরিষেবা দ্বারা প্রদত্ত নিরাপদ প্রমাণীকরণ, ক্লায়েন্ট যাচাইকরণ এবং সেশন নিয়ন্ত্রণগুলি ব্যবহার করুন এবং একটি স্ট্যাটিক কী-এর বিকল্প হিসাবে একটি গতিশীল টোকেন ব্যবহার করার কথা বিবেচনা করুন৷ নিশ্চিত করুন যে টোকেনটি যুক্তিসঙ্গতভাবে অল্প সময়ের মধ্যে শেষ হয়ে গেছে (1 ঘন্টা সাধারণ)।

ডাইনামিক টোকেন তারপর API-এ অ্যাক্সেস প্রদানের জন্য প্রমাণীকরণের জন্য ব্যবহার করা উচিত। এই নির্দেশিকাগুলি দেখায় কিভাবে এটি OAuth 2.0 ব্যবহার করে অর্জন করা যেতে পারে। এই নির্দেশিকাগুলি ছাড়াও, নিম্নলিখিত বৈশিষ্ট্যগুলি প্রয়োগ করে আপনার Android অ্যাপে দুর্বলতা কমাতে OAuth 2.0 কে আরও শক্তিশালী করা যেতে পারে৷

সঠিক ত্রুটি হ্যান্ডলিং এবং লগিং প্রয়োগ করুন:

  • OAuth ত্রুটিগুলি সুন্দরভাবে, দৃশ্যমানভাবে পরিচালনা করুন এবং ডিবাগিংয়ের উদ্দেশ্যে সেগুলি লগ করুন৷
    • একটি হ্রাসকৃত আক্রমণ পৃষ্ঠ আপনাকে উদ্ভূত সমস্যাগুলি সনাক্ত করতে এবং সমস্যা সমাধানে সহায়তা করবে।
    • নিশ্চিত করুন যে ব্যবহারকারীর কাছে লগ করা বা উপস্থাপিত কোনো বার্তা স্পষ্ট কিন্তু কোনো প্রতিপক্ষের জন্য উপযোগী তথ্য নেই।

অ্যাপ্লিকেশনটিতে নিরাপদে OAuth কনফিগার করুন:

  • অনুমোদন এবং টোকেন এন্ডপয়েন্ট উভয়েই redirect_uri প্যারামিটার পাঠান।
  • যদি আপনার অ্যাপ তৃতীয় পক্ষের পরিষেবার সাথে OAuth ব্যবহার করে, তাহলে আপনার অ্যাপের সংস্থানগুলিতে অ্যাক্সেস সীমাবদ্ধ করতে ক্রস-অরিজিন রিসোর্স শেয়ারিং ( CORS ) কনফিগার করুন৷
    • এটি অননুমোদিত ক্রস-সাইট স্ক্রিপ্টিং ( XSS ) আক্রমণ প্রতিরোধ করতে সাহায্য করবে।
  • CSRF আক্রমণ প্রতিরোধ করতে রাষ্ট্রীয় প্যারামিটার ব্যবহার করুন।

একটি নিরাপত্তা লাইব্রেরি ব্যবহার করুন:

  • নিরাপদ OAuth প্রবাহের বাস্তবায়নকে সহজ করতে AppAuth-এর মতো একটি নিরাপত্তা লাইব্রেরি ব্যবহার করার কথা বিবেচনা করুন।
    • এই Android লাইব্রেরিগুলি আগে উল্লিখিত নিরাপত্তার সর্বোত্তম অনুশীলনগুলির অনেকগুলি স্বয়ংক্রিয়ভাবে সাহায্য করতে পারে৷

Firebase এবং Google ID টোকেন সহ অন্যান্য প্রমাণীকরণ পদ্ধতি OpenAPI ডকুমেন্টেশনে বর্ণনা করা হয়েছে।

রাষ্ট্রহীন API

যদি API পরিষেবা পূর্বে প্রস্তাবিত কোনও সুরক্ষা প্রদান না করে এবং ব্যবহারকারীর লগইন ছাড়াই স্টেটলেস সেশনের জন্য প্রয়োজন হয়, বিকাশকারীদের তাদের নিজস্ব মিডলওয়্যার সমাধান প্রদান করতে হতে পারে।

এটি অ্যাপ এবং API এন্ডপয়েন্টের মধ্যে 'প্রক্সি করার' অনুরোধগুলিকে জড়িত করবে। এটি করার একটি পদ্ধতি হল JSON ওয়েব টোকেন (JWT) এবং JSON ওয়েব স্বাক্ষর (JWS) ব্যবহার করা, অথবা পূর্বে সুপারিশকৃত একটি সম্পূর্ণ প্রমাণীকৃত পরিষেবা প্রদান করা। এটি অ্যাপ্লিকেশন (ক্লায়েন্ট) এর পরিবর্তে দুর্বল স্ট্যাটিক কী সার্ভার-সাইড সংরক্ষণ করার একটি উপায় প্রদান করে।

মোবাইল অ্যাপ্লিকেশনগুলিতে এন্ড-টু-এন্ড স্টেটলেস সমাধান প্রদানের সাথে অন্তর্নিহিত সমস্যা রয়েছে। ক্লায়েন্ট (অ্যাপ) এর বৈধতা এবং ডিভাইসে ব্যক্তিগত কী বা গোপনীয়তা সুরক্ষিতভাবে সংরক্ষণ করা সবচেয়ে গুরুত্বপূর্ণ চ্যালেঞ্জগুলির মধ্যে কয়েকটি।

প্লে ইন্টিগ্রিটি API অ্যাপ্লিকেশন এবং অনুরোধের অখণ্ডতার বৈধতা প্রদান করে। এটি এমন কিছু পরিস্থিতিতে প্রশমিত করতে পারে যেখানে এই অ্যাক্সেসের অপব্যবহার করা যেতে পারে। কী ম্যানেজমেন্টের জন্য, অনেক ক্ষেত্রেই কীস্টোর হল প্রাইভেট কীগুলির নিরাপদ স্টোরেজের জন্য সেরা অবস্থান।

কিছু মোবাইল অ্যাপ্লিকেশন অ্যাপ্লিকেশনটির অখণ্ডতা পরীক্ষা করতে এবং একটি সুরক্ষিত বিনিময় ব্যবহার করে একটি কী প্রদান করতে একটি নিবন্ধন পর্ব ব্যবহার করে। এই পদ্ধতিগুলি জটিল এবং এই নথির সুযোগের বাইরে৷ যাইহোক, একটি ক্লাউড কী ব্যবস্থাপনা পরিষেবা একটি সম্ভাব্য সমাধান।

সম্পদ