কম্পিউটার টিউটোরিয়াল

নেটওয়ার্ক সিকিউরিটি ভার্সন ২.২ কী? অ্যান্ড্রয়েড নেটওয়ার্ক সিকিউরিটি কনফিগারেশন গাইড

Android Network Security Configuration (NSC) কী?

Network Security Configuration (NSC) হল অ্যান্ড্রয়েড ৭.০ (API Level 24) থেকে চালু একটি XML-ভিত্তিক ফিচার যা অ্যাপ ডেভেলপারদের কোড পরিবর্তন ছাড়াই নেটওয়ার্ক সিকিউরিটি পলিসি (ট্রাস্টেড CA, ক্লিয়ারটেক্সট ট্রাফিক, সার্টিফিকেট পিনিং, ডোমেন-স্পেসিফিক 룰) ডিক্লেয়ারেটিভভাবে ডিফাইন করতে দেয়। "ভার্সন ২.২" কোনো অফিশিয়াল ভার্সন নয়—হয়তো এটি কোনো লাইব্রেরি/প্রজেক্টের ইন্টারন্যাল ভার্সন বা অ্যান্ড্রয়েড ১২/১৩-এর আপডেটেড ফিচার সেটকে বোঝাচ্ছে।

network_security_config.xml ফাইল Струкচার

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" /> <!-- System CAs -->
            <certificates src="user" />      <!-- User-added CAs (Debug Only) -->
        </trust-anchors>
    </base-config>

    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">example.com</domain>
        <domain includeSubdomains="true">api.example.com</domain>
        <trust-anchors>
            <certificates src="@raw/my_custom_ca" /> <!-- Custom CA (res/raw/) -->
        </trust-anchors>
        <pin-set expiration="2025-01-01">
            <pin digest="SHA-256">Base64EncodedSPKIHash1</pin>
            <pin digest="SHA-256">Base64EncodedSPKIHash2</pin> <!-- Backup Pin -->
        </pin-set>
    </domain-config>

    <debug-overrides>
        <trust-anchors>
            <certificates src="user" /> <!-- Debug build-এ User CA ট্রাস্ট -->
        </trust-anchors>
    </debug-overrides>
</network-security-config>

ম্যানিফেস্টে রেজিস্টার করুন (AndroidManifest.xml)

<application
    android:networkSecurityConfig="@xml/network_security_config"
    ... >
    ...
</application>

মূল ফিচারস ও আট্রিবিউটস

এলিমেন্ট/অ্যাট্রিবিউটকার্যসিকিউরিটি ইম্প্যাক্ট
cleartextTrafficPermitted="false"HTTP (Plaintext) ট্রাফিক ব্লক করে (Default: false API 28+)MITM, ইভসড্রপিং রোধে। প্রোডাকশনে সবসময় false রাখুন।
<trust-anchors>কোন CA-গুলো ট্রাস্ট করবে (system, user, @raw/resource)সেলফ-সাইনড সার্টিফিকেট বা প্রাইভেট PKI সাপোর্ট।
<pin-set>HPKP (HTTP Public Key Pinning) - SPKI হ্যাশ পিনিংCA কমপ্রোমাইজ হলেও MITM রোধে (Backup Pin বাধ্যতামূলক)।
<domain-config>নির্দিষ্ট ডোমেনের জন্য আলাদা রুলগ্রানুলার কন্ট্রোল (API এন্ডপয়েন্ট vs জেনারেল ব্রাউজিং)।
<debug-overrides>Debug Build-এ User CA ট্রাস্ট ( 찰লস/বর্প স্যুট টেস্টিং এর জন্য)রিলিজ বিল্ডে অপ্রভাবিত (সুরক্ষিত)।

CleartextTrafficPermitted সমস্যা ও সমাধান

Error: Cleartext HTTP traffic to example.com not permitted

  • কারণ: Android 9 (API 28+) ডিফল্টভাবে HTTP ব্লক করে।
  • সমাধান ১ (সঠিক): সার্ভারে HTTPS/TLS এনাবল করুন (Let's Encrypt ফ্রি সার্টিফিকেট)۔
  • সমাধান ২ (টেম্পোরারি/ডেভ): NSC-এ cleartextTrafficPermitted="true" সেট করুন স্পেসিফিক ডোমেনের জন্য।
  • সমাধান ৩ (ম্যানিফেস্টে - ডেপ্রিকেটেড): android:usesCleartextTraffic="true" (API 28+ এ NSC প্রাধান্য পায়)।

Flutter / React Native / Xamarin এ NSC ব্যবহার

  • Flutter: android/app/src/main/res/xml/network_security_config.xml তৈরি করুন → AndroidManifest.xml-এ <meta-data android:name="io.flutter.network-policy" android:resource="@xml/network_security_config"/> যোগ করুন (Flutter 3.7+ নেটিভ সাপোর্ট)。《
  • React Native: নেটিভ অ্যান্ড্রয়েড মডিউলে NSC ফাইল যোগ করুন (সামান্য পদ্ধতি)।

সেরা অনুশীলন (Best Practices)

  1. প্রোডাকশনে সবসময় cleartextTrafficPermitted="false" (Base Config-এ)।
  2. Certificate Pinning (Pin Set) ব্যবহার করুন ক্রিটিক্যাল API এন্ডপয়েন্টের জন্য (Backup Pin সহ)।
  3. Custom CA শুধু জরুরি হলে (Enterprise মিডলবক্স, ইন্টারন্যাল API) ব্যবহার করুন।
  4. Debug Overrides শুধু Debug Build-এ (User CA ট্রাস্ট প্রোডাকশনে ন أبدًا)।
  5. Pin Expiration Date সেট করুন (সার্টিফিকেট রিনিউয়েলের আগে অ্যাপ আপডেট করতে হবে)।
  6. Network Security Config টেস্ট করুন: adb shell dumpsys network_security_config <package_name>।
  1. নেটওয়ার্ক সিকিউরিটিতে BA ডিগ্রি কী

  2. নেটওয়ার্ক সিকিউরিটি কী? ধরন, গুরুত্ব এবং বাস্তব উদাহরণ

  3. নেটওয়ার্ক সিকিউরিটি আইডি/কী কী এবং কীভাবে খুঁজে বের করবেন

  4. নেটওয়ার্ক সিকিউরিটি কী? প্রকার, গুরুত্ব ও কাজ করার পদ্ধতি