27 মার্চ, 2025 থেকে, আমরা AOSP তৈরি করতে এবং অবদান রাখতে aosp-main
এর পরিবর্তে android-latest-release
ব্যবহার করার পরামর্শ দিচ্ছি। আরও তথ্যের জন্য, AOSP-তে পরিবর্তনগুলি দেখুন।
অ্যাপ নিরাপত্তার সর্বোত্তম অনুশীলন
সেভ করা পৃষ্ঠা গুছিয়ে রাখতে 'সংগ্রহ' ব্যবহার করুন
আপনার পছন্দ অনুযায়ী কন্টেন্ট সেভ করুন ও সঠিক বিভাগে রাখুন।
এই বিভাগে Android ডিভাইসে অ্যাপের নিরাপত্তা নিশ্চিত করার জন্য সুপারিশ রয়েছে।
উত্স কোড পর্যালোচনা
সোর্স কোড পর্যালোচনা এই নথিতে চিহ্নিত করা সহ নিরাপত্তা সংক্রান্ত সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে পারে। অ্যান্ড্রয়েড দৃঢ়ভাবে ম্যানুয়াল এবং স্বয়ংক্রিয় সোর্স কোড পর্যালোচনা উভয়কে উৎসাহিত করে।
- কভারেজ নিশ্চিত করতে পর্যালোচনা পরিচালনা করার সময় ব্যাপক নিরাপত্তা নির্দেশিকা অনুসরণ করুন। সামঞ্জস্যপূর্ণ এবং সম্পূর্ণ পর্যালোচনা নিশ্চিত করতে প্রাসঙ্গিক অভ্যন্তরীণ বা বাহ্যিক মানগুলি ব্যবহার করুন।
- অ্যান্ড্রয়েড এসডিকে ব্যবহার করে সমস্ত অ্যাপ কোডে একটি লিন্টার চালান, যেমন অ্যান্ড্রয়েড স্টুডিও লিন্টার এবং কোনো চিহ্নিত সমস্যা সংশোধন করুন।
- একটি স্বয়ংক্রিয় সরঞ্জাম ব্যবহার করে নেটিভ কোড বিশ্লেষণ করুন যা মেমরি পরিচালনার সমস্যাগুলি সনাক্ত করতে পারে, যেমন বাফার ওভারফ্লো এবং অফ-বাই-ওয়ান ত্রুটি৷
- অ্যান্ড্রয়েড বিল্ড সিস্টেম অনেক LLVM স্যানিটাইজার সমর্থন করে, যেমন Address Sanitizer এবং UndefinedBehaviorSanitizer , যা মেমরি-সম্পর্কিত সমস্যাগুলির রানটাইম বিশ্লেষণের জন্য ব্যবহার করা যেতে পারে। ফাজিংয়ের সাথে মিলিত, libFuzer-এর মাধ্যমে অ্যান্ড্রয়েডে সমর্থিত, স্যানিটাইজারগুলি আরও তদন্তের প্রয়োজন অস্বাভাবিক প্রান্তের ঘটনাগুলিকে উন্মোচন করতে পারে।
- একজন জ্ঞানী নিরাপত্তা মূল্যায়নকারীকে উচ্চতর ঝুঁকির কোড পর্যালোচনা করা উচিত, যেমন ক্রিপ্টো, পেমেন্ট প্রসেসিং এবং PII প্রসেসিং।
স্বয়ংক্রিয় পরীক্ষা
স্বয়ংক্রিয় পরীক্ষা নিরাপত্তা সমস্যাগুলির একটি বিস্তৃত পরিসর সনাক্ত করতে সাহায্য করতে পারে এবং এটি নিয়মিত করা উচিত।
- প্রাথমিকভাবে সমস্যা সনাক্ত করতে এবং সংশোধনের সময় কমাতে উন্নয়ন প্রক্রিয়া জুড়ে নিয়মিতভাবে CTS- এর সর্বশেষ সংস্করণ চালান। আমাদের স্বয়ংক্রিয় বিল্ড প্রক্রিয়ায় ক্রমাগত একীকরণের অংশ হিসাবে Android CTS ব্যবহার করে, যা প্রতিদিন একাধিকবার তৈরি করে।
- ইন্টারফেসের স্বয়ংক্রিয় নিরাপত্তা পরীক্ষা, বিকৃত ইনপুট (ফাজ টেস্টিং) সহ পরীক্ষা করা। অ্যান্ড্রয়েডের বিল্ড সিস্টেম ফাজ টেস্ট লেখার জন্য libFuzer সমর্থন করে।
দুর্বলতা স্ক্যানিং
দুর্বলতা স্ক্যানিং নিশ্চিত করতে সাহায্য করতে পারে যে আগে থেকে ইনস্টল করা অ্যাপগুলি পরিচিত নিরাপত্তা দুর্বলতা থেকে মুক্ত। উন্নত সনাক্তকরণ এই দুর্বলতাগুলিকে মোকাবেলা করার জন্য এবং ব্যবহারকারী এবং ডিভাইসগুলির ঝুঁকি প্রতিরোধ করার জন্য প্রয়োজনীয় সময় এবং খরচ কমাতে পারে।
- একটি শিল্প-স্বীকৃত অ্যাপ দুর্বলতা স্ক্যানিং টুল এবং সনাক্ত করা দুর্বলতাগুলির ঠিকানা ব্যবহার করে সমস্ত প্রাক-ইনস্টল করা অ্যাপ স্ক্যান করুন।
সম্ভাব্য ক্ষতিকারক অ্যাপ্লিকেশন
এটি নিশ্চিত করা গুরুত্বপূর্ণ যে আপনার ডিভাইসে আগে থেকে ইনস্টল করা অ্যাপগুলি সম্ভাব্য ক্ষতিকারক অ্যাপ্লিকেশন (PHAs) নয়। আপনার ডিভাইসে অন্তর্ভুক্ত সমস্ত অ্যাপের আচরণের জন্য আপনি দায়ী৷ ডিভাইস লঞ্চের আগে, দুর্বলতার জন্য সমস্ত পূর্ব-লোড করা অ্যাপ স্ক্যান করুন।
PHAs সম্পর্কে আরও তথ্যের জন্য এবং Google কীভাবে Play Store-এ তাদের বিরুদ্ধে লড়াই করছে , Google Play Protect বিকাশকারী ডকুমেন্টেশন দেখুন।
অ্যাপ ইনস্টলেশন এবং অনুমতি
প্রি-ইনস্টল করা অ্যাপগুলির জন্য অতিরিক্ত অনুমতি নিরাপত্তা ঝুঁকি তৈরি করতে পারে। প্রি-ইনস্টল করা অ্যাপগুলিকে ন্যূনতম প্রয়োজনীয় অনুমতিগুলিতে সীমাবদ্ধ করুন এবং নিশ্চিত করুন যে তাদের অপ্রয়োজনীয় অনুমতি বা বিশেষাধিকারগুলিতে অ্যাক্সেস নেই। অ্যাপের অনুমতিগুলি AndroidManifest.xml- এ বর্ণনা করা হয়েছে।
- প্রি-ইনস্টল করা অ্যাপগুলিকে অপ্রয়োজনীয় অনুমতি বা বিশেষাধিকার দেবেন না। সিস্টেমের সুবিধা সহ অ্যাপগুলিকে পুঙ্খানুপুঙ্খভাবে পর্যালোচনা করুন কারণ তাদের খুব সংবেদনশীল অনুমতি থাকতে পারে।
- নিশ্চিত করুন যে অনুরোধ করা সমস্ত অনুমতি সেই নির্দিষ্ট অ্যাপের কার্যকারিতার জন্য প্রাসঙ্গিক এবং প্রয়োজনীয়।
-
INSTALL_PACKAGES
অনুমতি ব্যবহার করে এমন সমস্ত পূর্ব-ইন্সটল করা অ্যাপগুলির জন্য ব্যবহারকারীর প্রকাশ রয়েছে তা নিশ্চিত করুন৷ - নিশ্চিত করুন যে ডেভেলপার চুক্তিগতভাবে UID 0 হিসাবে কোনো অ্যাপ ইনস্টল না করতে বাধ্য।
- বিকাশকারীর নেটওয়ার্কের মাধ্যমে ইনস্টল করা সমস্ত অ্যাপের ম্যানিফেস্টে ঘোষিত অনুমতিগুলির মূল্যায়ন করুন৷
- ডিভাইসে অ্যাপ পরিবেশন করার আগে Google Safe Browsing API-এর সাহায্যে অটো-আপডেটার এবং ইনস্টলার অ্যাপের সমস্ত ডাউনলোড ইউআরএল স্ক্যান করতে ডেভেলপার চুক্তিবদ্ধভাবে বাধ্য কিনা তা নিশ্চিত করুন।
অ্যাপ সাইনিং
অ্যাপ স্বাক্ষরগুলি ডিভাইসের নিরাপত্তায় একটি গুরুত্বপূর্ণ ভূমিকা পালন করে এবং অনুমতি পরীক্ষা এবং সফ্টওয়্যার আপডেটের জন্য ব্যবহার করা হয়। অ্যাপ্লিকেশানগুলি স্বাক্ষর করার জন্য ব্যবহার করার জন্য একটি কী নির্বাচন করার সময়, এটি বিবেচনা করা গুরুত্বপূর্ণ যে একটি অ্যাপ শুধুমাত্র একটি ডিভাইসে উপলব্ধ নাকি একাধিক ডিভাইসে সাধারণ৷
- নিশ্চিত করুন যে অ্যাপগুলি সর্বজনীনভাবে পরিচিত, যেমন AOSP ডেভেলপার কী দিয়ে স্বাক্ষরিত নয়৷
- নিশ্চিত করুন যে অ্যাপগুলিতে স্বাক্ষর করার জন্য ব্যবহৃত কীগুলি সীমিত, নিরীক্ষণযোগ্য অ্যাক্সেস প্রদান করে এমন একটি হার্ডওয়্যার নিরাপত্তা মডিউল (এইচএসএম) সহ সংবেদনশীল কীগুলি পরিচালনা করার জন্য শিল্প-মানের অনুশীলনের সাথে সামঞ্জস্যপূর্ণভাবে পরিচালিত হয়৷
- নিশ্চিত করুন যে অ্যাপগুলি প্ল্যাটফর্ম কী দিয়ে স্বাক্ষরিত নয়। এটি করার ফলে একটি অ্যাপকে প্ল্যাটফর্ম স্বাক্ষর অনুমতিগুলিতে অ্যাক্সেস দেওয়া হয়, যা খুব শক্তিশালী এবং শুধুমাত্র অপারেটিং সিস্টেমের উপাদানগুলির দ্বারা ব্যবহার করার উদ্দেশ্যে। সিস্টেম অ্যাপগুলির বিশেষাধিকারপ্রাপ্ত অনুমতিগুলি ব্যবহার করা উচিত৷
- নিশ্চিত করুন যে একই প্যাকেজ নামের অ্যাপগুলি বিভিন্ন কী দিয়ে স্বাক্ষরিত নয়৷ এটি প্রায়শই বিভিন্ন ডিভাইসের জন্য একটি অ্যাপ তৈরি করার সময় ঘটে, বিশেষ করে যখন প্ল্যাটফর্ম কী ব্যবহার করা হয়। অ্যাপটি ডিভাইস-স্বাধীন হলে, ডিভাইস জুড়ে একই কী ব্যবহার করুন। অ্যাপটি ডিভাইস-নির্দিষ্ট হলে, ডিভাইস এবং কী প্রতি অনন্য প্যাকেজ নাম তৈরি করুন।
অ্যাপ্লিকেশান এবং প্রক্রিয়াগুলিকে আলাদা করুন৷
অ্যান্ড্রয়েড স্যান্ডবক্সিং মডেলটি সঠিকভাবে ব্যবহার করা হলে অ্যাপ এবং প্রক্রিয়াগুলির চারপাশে অতিরিক্ত নিরাপত্তা প্রদান করে।
রুট প্রক্রিয়া বিচ্ছিন্ন করুন
রুট প্রক্রিয়াগুলি বিশেষাধিকার বৃদ্ধির আক্রমণের সবচেয়ে ঘন ঘন লক্ষ্য; রুট প্রসেস সংখ্যা কমিয়ে সুবিধা বৃদ্ধির ঝুঁকি কমায়।
- ডিভাইসগুলি রুট হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালায় তা নিশ্চিত করুন৷ যেখানে সম্ভব, রুট প্রক্রিয়ার পরিবর্তে একটি নিয়মিত অ্যান্ড্রয়েড প্রক্রিয়া ব্যবহার করুন। যদি একটি প্রক্রিয়াটি একটি ডিভাইসে রুট হিসাবে চালানো আবশ্যক, একটি AOSP বৈশিষ্ট্য অনুরোধে প্রক্রিয়াটি নথিভুক্ত করুন যাতে এটি সর্বজনীনভাবে পর্যালোচনা করা যায়।
- যেখানে সম্ভব, রুট কোড অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং ইন্টারপ্রসেস কমিউনিকেশন (IPC) এর মাধ্যমে অ্যাক্সেস করা উচিত। উদাহরণস্বরূপ, বাইন্ডারের মাধ্যমে অ্যাক্সেসযোগ্য একটি ছোট পরিষেবাতে রুট কার্যকারিতা হ্রাস করুন এবং নেটওয়ার্ক ট্র্যাফিক পরিচালনা করার জন্য কম বা কোনও সুবিধা নেই এমন একটি অ্যাপে স্বাক্ষরের অনুমতি সহ পরিষেবাটি প্রকাশ করুন৷
- নেটওয়ার্ক সকেটে রুট প্রসেস শুনতে হবে না।
- রুট প্রক্রিয়ায় অবশ্যই একটি সাধারণ-উদ্দেশ্য রানটাইম অন্তর্ভুক্ত করা উচিত নয়, যেমন একটি জাভা ভিএম।
আইসোলেট সিস্টেম অ্যাপ
সাধারণভাবে, শেয়ার্ড সিস্টেম ইউনিক আইডেন্টিফায়ার (UID) দিয়ে আগে থেকে ইনস্টল করা অ্যাপগুলি চালানো উচিত নয়। যদি কোনও অ্যাপের জন্য সিস্টেমের শেয়ার্ড ইউআইডি বা অন্য বিশেষ সুবিধাপ্রাপ্ত পরিষেবা (যেমন, ফোন) ব্যবহার করা প্রয়োজন হয়, তবে অ্যাপটি ব্যবহারকারীদের দ্বারা ইনস্টল করা তৃতীয় পক্ষের অ্যাপগুলির দ্বারা অ্যাক্সেস করা যেতে পারে এমন কোনও পরিষেবা, ব্রডকাস্ট রিসিভার বা সামগ্রী প্রদানকারীকে রপ্তানি করা উচিত নয়।
- ডিভাইসগুলি সিস্টেম হিসাবে ন্যূনতম প্রয়োজনীয় কোড চালায় তা নিশ্চিত করুন। যেখানে সম্ভব, সিস্টেম UID পুনঃব্যবহারের পরিবর্তে নিজস্ব UID সহ একটি Android প্রক্রিয়া ব্যবহার করুন।
- যেখানে সম্ভব, সিস্টেম কোড অবিশ্বস্ত ডেটা থেকে বিচ্ছিন্ন করা উচিত এবং শুধুমাত্র অন্যান্য বিশ্বস্ত প্রক্রিয়াগুলিতে IPC প্রকাশ করা উচিত৷
- সিস্টেম প্রসেস একটি নেটওয়ার্ক সকেটে শুনতে হবে না. এটি একটি CTS প্রয়োজনীয়তা।
বিচ্ছিন্ন প্রক্রিয়া
অ্যান্ড্রয়েড অ্যাপ্লিকেশন স্যান্ডবক্স রুট প্রক্রিয়া এবং ডিবাগার সহ সিস্টেমের অন্যান্য প্রক্রিয়াগুলি থেকে বিচ্ছিন্নতার প্রত্যাশা সহ অ্যাপগুলি সরবরাহ করে। অ্যাপ এবং ব্যবহারকারীর দ্বারা ডিবাগিং বিশেষভাবে সক্ষম না হলে, কোনও অ্যাপই সেই প্রত্যাশা লঙ্ঘন করবে না।
- নিশ্চিত করুন যে রুট প্রক্রিয়াগুলি একটি নথিভুক্ত Android ডিবাগিং পদ্ধতি ব্যবহার না করা পর্যন্ত পৃথক অ্যাপ ডেটা ফোল্ডারের মধ্যে ডেটা অ্যাক্সেস করে না।
- নিশ্চিত করুন যে রুট প্রক্রিয়াগুলি অ্যাপগুলির মেমরি অ্যাক্সেস না করে, যদি না একটি নথিভুক্ত অ্যান্ড্রয়েড ডিবাগিং পদ্ধতি ব্যবহার করে৷
- নিশ্চিত করুন যে ডিভাইসগুলিতে এমন কোনও অ্যাপ অন্তর্ভুক্ত নেই যা অন্যান্য অ্যাপ বা প্রক্রিয়াগুলির ডেটা বা মেমরি অ্যাক্সেস করে।
এই পৃষ্ঠার কন্টেন্ট ও কোডের নমুনাগুলি Content License-এ বর্ণিত লাইসেন্সের অধীনস্থ। Java এবং OpenJDK হল Oracle এবং/অথবা তার অ্যাফিলিয়েট সংস্থার রেজিস্টার্ড ট্রেডমার্ক।
2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।
[[["সহজে বোঝা যায়","easyToUnderstand","thumb-up"],["আমার সমস্যার সমাধান হয়েছে","solvedMyProblem","thumb-up"],["অন্যান্য","otherUp","thumb-up"]],[["এতে আমার প্রয়োজনীয় তথ্য নেই","missingTheInformationINeed","thumb-down"],["খুব জটিল / অনেক ধাপ","tooComplicatedTooManySteps","thumb-down"],["পুরনো","outOfDate","thumb-down"],["অনুবাদ সংক্রান্ত সমস্যা","translationIssue","thumb-down"],["নমুনা / কোড সংক্রান্ত সমস্যা","samplesCodeIssue","thumb-down"],["অন্যান্য","otherDown","thumb-down"]],["2025-07-29 UTC-তে শেষবার আপডেট করা হয়েছে।"],[],[],null,["# App security best practices\n\nThis section contains recommendations to ensure the security of apps on\nAndroid devices.\n\nSource code review\n------------------\n\nSource code review can detect a broad range of security issues, including\nthose identified in this document. Android strongly encourages both manual\nand automated source code review.\n\n- Follow comprehensive security guidance when conducting reviews to ensure coverage. Utilize relevant internal or external standards to ensure consistent and complete reviews.\n- Run a linter, such as the [Android Studio linter](https://developer.android.com/studio/write/lint), on all app code using the Android SDK and correct any identified issues.\n- Analyze native code using an automated tool that can detect memory management issues, such as buffer overflows and off-by-one errors.\n- The Android build system supports many of the LLVM sanitizers, such as [AddressSanitizer](/docs/security/test/asan) and [UndefinedBehaviorSanitizer](/docs/security/test/sanitizers#undefinedbehaviorsanitizer), which can be used for runtime analysis of memory-related issues. Combined with fuzzing, supported in Android through [libFuzzer](/docs/security/test/libfuzzer), sanitizers can uncover unusual edge cases requiring further investigation.\n- A knowledgeable security assessor should review higher risk code, such as crypto, payment processing, and PII processing.\n\nAutomated testing\n-----------------\n\nAutomated testing can help detect a broad range of security issues and\nshould be performed regularly.\n\n- Run the latest version of [CTS](/docs/compatibility/cts) regularly throughout the development process to detect problems early and reduce time to correction. Android uses CTS as part of continuous integration in our automated build process, which builds multiple times per day.\n- Automate security testing of interfaces, including testing with malformed inputs (fuzz testing). Android's build system supports [libFuzzer](/docs/security/test/libfuzzer) for writing fuzz tests.\n\nVulnerability scanning\n----------------------\n\nVulnerability scanning can help ensure that pre-installed apps are free of\nknown security vulnerabilities. Advanced detection can reduce the time and\ncost required with addressing these vulnerabilities and preventing risk to\nusers and devices.\n\n- Scan all pre-installed apps using an industry-recognized app vulnerability scanning tool and address detected vulnerabilities.\n\nPotentially Harmful Applications\n--------------------------------\n\nIt is important to ensure that the pre-installed apps on your device aren't\n[Potentially\nHarmful Applications](https://developers.google.com/android/play-protect/phacategories) (PHAs). You are responsible for the behavior of all\napps that are included on your devices. Prior to device launch, scan all\npre-loaded apps for vulnerabilities.\n\nFor more information about PHAs and how Google is combating them in the\nPlay store see the [Google Play Protect\ndeveloper documentation](https://developers.google.com/android/play-protect/).\n\nApp installation and permissions\n--------------------------------\n\nExcessive permissions for pre-installed apps can create a security risk.\nRestrict pre-installed apps to the minimum necessary permissions and ensure they\ndon't have access to unnecessary permissions or privileges. App permissions are\ndescribed in the [AndroidManifest.xml](https://android.googlesource.com/platform/frameworks/base/+/refs/heads/android16-release/core/res/AndroidManifest.xml).\n\n- Don't grant unnecessary permissions or privileges to pre-installed apps. Thoroughly review apps with system privileges as they can have very sensitive permissions.\n- Ensure that all permissions requested are relevant and necessary for the functionality of that specific app.\n- Ensure there is user disclosure for all pre-installed apps that use the `INSTALL_PACKAGES` permission.\n- Ensure that the developer is contractually obligated not to install any apps as UID 0.\n- Evaluate permissions declared in the manifest of all apps to be installed through the developer's network.\n- Ensure that the developer is contractually obligated to scan all download URLs of auto-updater and installer apps with [Google Safe Browsing API](https://developers.google.com/safe-browsing/) before serving apps to the device.\n\nApp signing\n-----------\n\nApp signatures play an important role in device security and are used for\npermissions checks and software updates. When selecting a key to use for\nsigning apps, it is important to consider whether an app is available\nonly on a single device or common across multiple devices.\n\n- Ensure that apps aren't signed with a key that is publicly known, such as the AOSP developer key.\n- Ensure that keys used to sign apps are managed in a manner consistent with industry-standard practices for handling sensitive keys, including an hardware security module (HSM) that provides limited, auditable access.\n- Ensure that apps aren't signed with the platform key. Doing so gives an app access to platform signature permissions, which are very powerful and only intended to be used by components of the operating system. System apps should use privileged permissions.\n- Ensure that apps with the same package name aren't signed with different keys. This often occurs when creating an app for different devices, especially when using the platform key. If the app is device-independent, use the same key across devices. If the app is device-specific, create unique package names per device and key.\n\nIsolate apps and processes\n--------------------------\n\nThe Android [sandboxing model](/docs/security/app-sandbox)\nprovides extra security around apps and processes when used correctly.\n\n### Isolate root processes\n\nRoot processes are the most frequent target of privilege escalation attacks;\nreducing the number of root processes reduces risk of privilege escalation.\n\n- Ensure that devices run the minimum necessary code as root. Where possible, use a regular Android process rather than a root process. If a process must run as root on a device, document the process in an AOSP feature request so it can be publicly reviewed.\n- Where possible, root code should be isolated from untrusted data and accessed through interprocess communication (IPC). For example, reduce root functionality to a small service accessible through Binder and expose the service with signature permission to an app with low or no privileges to handle network traffic.\n- Root processes must not listen on a network socket.\n- Root processes must not include a general-purpose runtime, such as a Java VM.\n\n### Isolate system apps\n\nIn general, pre-installed apps shouldn't run with the shared system unique\nidentifier (UID). If it is necessary for an app to use the shared UID of\nsystem or another privileged service (e.g., phone), the app shouldn't export\nany services, broadcast receivers, or content providers that can be accessed\nby third-party apps installed by users.\n\n- Ensure devices run the minimum necessary code as system. Where possible, use an Android process with its own UID rather than reusing the system UID.\n- Where possible, system code should be isolated from untrusted data and expose IPC only to other trusted processes.\n- System processes must not listen on a network socket. This is a CTS requirement.\n\n### Isolate processes\n\nThe Android Application Sandbox provides apps with an expectation of\nisolation from other processes on the system, including root processes and\ndebuggers. Unless debugging is specifically enabled by the app and the user,\nno app should violate that expectation.\n\n- Ensure root processes don't access data within individual app data folders, unless using a documented Android debugging method.\n- Ensure root processes don't access memory of apps, unless using a documented Android debugging method.\n- Ensure devices don't include any app that accesses data or memory of other apps or processes."]]