ব্রাউজার পরিবেশে CommonJS-এর তুলনায় AMD অ্যাসিঙ্ক্রোনাসভাবে মডিউল লোড করে পারফরম্যান্স উন্নত করে। এটি মডিউল-ভিত্তিক কাঠামোর কারণে ভালো কোড বিচ্ছিন্নতাও প্রদান করে। তবে, এর সিনট্যাক্স অন্যান্য মডিউল সিস্টেমের চেয়ে বেশি বিস্তারিত হতে পারে।

৫. ECMAScript মডিউল (ESM):

ESM হলো জাভাস্ক্রিপ্টে অন্তর্নির্মিত একটি স্ট্যান্ডার্ডাইজড মডিউল সিস্টেম। এটি নির্ভরতা পরিচালনা করতে `import` এবং `export` কীওয়ার্ড ব্যবহার করে। ESM আধুনিক ব্রাউজার এবং Node.js দ্বারা সমর্থিত (কিছু কনফিগারেশন সহ)।

উদাহরণ:

            // moduleA.js

const secretKey = "verySecretKey";

export function encrypt(data) {
  // Encryption logic using secretKey
  return data.split('').reverse().join(''); // Dummy encryption for example
}

// moduleB.js

import { encrypt } from './moduleA.js';

const encryptedData = encrypt("Sensitive Data");
console.log(encryptedData);

            

ESM বেশ কিছু সুবিধা প্রদান করে, যার মধ্যে রয়েছে স্ট্যাটিক বিশ্লেষণ (যা ত্রুটি তাড়াতাড়ি ধরতে সাহায্য করতে পারে), ট্রি শেকিং (বান্ডেলের আকার কমাতে অব্যবহৃত কোড অপসারণ), এবং অ্যাসিঙ্ক্রোনাস লোডিং। এটি চমৎকার কোড বিচ্ছিন্নতাও প্রদান করে কারণ প্রতিটি মডিউলের নিজস্ব স্কোপ থাকে এবং নির্ভরতাগুলি স্পষ্টভাবে ঘোষণা করা হয়।

মডিউল সিস্টেমের বাইরে কোড বিচ্ছিন্নকরণ কৌশল

সঠিক মডিউল সিস্টেম নির্বাচন করা অত্যন্ত গুরুত্বপূর্ণ হলেও, নিরাপত্তা বাড়ানোর জন্য আরও কিছু কোড বিচ্ছিন্নকরণ কৌশল প্রয়োগ করা যেতে পারে:

১. সর্বনিম্ন অধিকারের নীতি (Principle of Least Privilege):

এই নীতি অনুসারে, প্রতিটি মডিউলের কেবল তার কাজ সম্পাদনের জন্য প্রয়োজনীয় সর্বনিম্ন স্তরের অধিকার থাকা উচিত। মডিউলগুলিকে অপ্রয়োজনীয় অনুমতি দেওয়া থেকে বিরত থাকুন। উদাহরণস্বরূপ, ডেটা প্রদর্শনের জন্য দায়ী একটি মডিউলের সংবেদনশীল ব্যবহারকারীর তথ্য বা প্রশাসনিক ফাংশনগুলিতে অ্যাক্সেস থাকা উচিত নয়।

উদাহরণ: একটি ওয়েব অ্যাপ্লিকেশন বিবেচনা করুন যেখানে ব্যবহারকারীরা ফাইল আপলোড করতে পারে। ফাইল আপলোড পরিচালনার জন্য দায়ী মডিউলটির সার্ভারে নির্বিচারে কোড চালানোর অনুমতি থাকা উচিত নয়। এটির কেবল আপলোড করা ফাইল একটি নির্দিষ্ট ডিরেক্টরিতে সংরক্ষণ করার এবং প্রাথমিক বৈধতা যাচাই করার ক্ষমতা থাকা উচিত।

২. ইনপুট যাচাই এবং স্যানিটাইজেশন:

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

উদাহরণ: একটি ব্লগ পোস্টের জন্য ব্যবহারকারীর জমা দেওয়া টেক্সট গ্রহণ করার সময়, XSS আক্রমণ প্রতিরোধ করতে HTML ট্যাগ ফিল্টার করুন এবং বিশেষ অক্ষরগুলি এস্কেপ করুন। HTML কন্টেন্ট স্যানিটাইজ করতে DOMPurify-এর মতো লাইব্রেরি ব্যবহার করুন।

৩. কন্টেন্ট সিকিউরিটি পলিসি (CSP):

CSP একটি ব্রাউজার নিরাপত্তা ব্যবস্থা যা আপনাকে একটি ওয়েব পেজ কোন কোন রিসোর্স লোড করতে পারবে তা নিয়ন্ত্রণ করতে দেয়। একটি কঠোর CSP সংজ্ঞায়িত করার মাধ্যমে, আপনি ব্রাউজারকে ইনলাইন স্ক্রিপ্ট চালানো, অবিশ্বস্ত উৎস থেকে রিসোর্স লোড করা এবং অন্যান্য সম্ভাব্য বিপজ্জনক কাজ করা থেকে বিরত রাখতে পারেন। এটি XSS আক্রমণ কমাতে সাহায্য করে।

উদাহরণ: একটি CSP হেডার এইরকম হতে পারে: `Content-Security-Policy: default-src 'self'; script-src 'self' https://example.com; style-src 'self' https://example.com; img-src 'self' data:`

এই পলিসি পেজটিকে একই অরিজিন (`'self'`) থেকে রিসোর্স লোড করার এবং `https://example.com` থেকে স্ক্রিপ্ট এবং স্টাইল লোড করার অনুমতি দেয়। ছবি একই অরিজিন থেকে বা ডেটা URI হিসাবে লোড করা যেতে পারে। অন্য কোনো অরিজিন থেকে অন্য যেকোনো রিসোর্স ব্লক করা হবে।

৪. সাবরিসোর্স ইন্টিগ্রিটি (SRI):

SRI আপনাকে যাচাই করতে দেয় যে তৃতীয় পক্ষের CDN (কন্টেন্ট ডেলিভারি নেটওয়ার্ক) থেকে লোড করা ফাইলগুলিতে কোনো পরিবর্তন করা হয়নি। আপনি `জাভাস্ক্রিপ্ট মডিউল নিরাপত্তা: গ্লোবাল অ্যাপ্লিকেশনের জন্য কোড বিচ্ছিন্নকরণ কৌশল | MLOG | MLOG