CORS (Cross-Origin Resource Sharing) একটি নিরাপত্তা বৈশিষ্ট্য যা ওয়েব ব্রাউজারে বিভিন্ন ডোমেইন থেকে আসা রিসোর্স অ্যাক্সেসের অনুমতি বা নিষেধাজ্ঞা নির্ধারণ করে। এটি মূলত তখন ব্যবহৃত হয়, যখন একটি ওয়েব পেজ এক ডোমেইন থেকে লোড হওয়া রিসোর্স (যেমন: API কল) অন্য একটি ডোমেইন থেকে লোড করতে চায়।
উদাহরণস্বরূপ, যদি আপনি একটি ওয়েব পেজে https://www.example.com
ডোমেইনে একটি ফ্রন্ট-এন্ড অ্যাপ্লিকেশন চালাচ্ছেন এবং ওই অ্যাপ্লিকেশন যদি API কল করতে চায় https://api.example2.com
ডোমেইনে, তবে CORS এর মাধ্যমে API সেগুলোর অ্যাক্সেস কন্ট্রোল করা হয়।
CORS এর মাধ্যমে একটি ওয়েব পেজ অন্য ডোমেইন থেকে রিসোর্স ব্যবহার করার অনুমতি পায় যদি সেই ডোমেইনটির সেগমেন্টে CORS কনফিগারেশন সঠিকভাবে করা থাকে। সাধারণত, ব্রাউজার একটি HTTP OPTIONS রিকোয়েস্ট পাঠায় (যাকে "preflight request" বলা হয়) আগে থেকে নির্ধারিত ডোমেইনটির CORS হেডার যাচাই করতে, এবং যদি সঠিক হেডার থাকে, তাহলে মূল রিকোয়েস্ট (যেমন GET, POST, PUT, DELETE) পাঠানো হয়।
উদাহরণস্বরূপ, যখন ব্রাউজার CORS preflight request পাঠায়, তখন রিসিভিং সার্ভার CORS হেডার দিয়ে রেসপন্স পাঠায়, যা ব্রাউজারকে জানায় যে রিকোয়েস্টটি অনুমোদিত কিনা।
CORS এর জন্য কিছু গুরুত্বপূর্ণ HTTP হেডার রয়েছে, যেগুলি সার্ভারের রেসপন্সে থাকে। এগুলি হল:
Access-Control-Allow-Origin: *
পাঠায়, তাহলে যেকোনো ডোমেইন থেকে রিসোর্স অ্যাক্সেস করা যাবে। যদি নির্দিষ্ট ডোমেইন দেওয়া থাকে, যেমন Access-Control-Allow-Origin: https://www.example.com
, তাহলে শুধুমাত্র সেই ডোমেইন থেকে রিসোর্স অ্যাক্সেস করা যাবে।true
থাকে, তাহলে এটি ব্রাউজারকে ক্লায়েন্টের ক্রেডেনশিয়াল (যেমন: কুকি, HTTP অথেন্টিকেশন) পাঠানোর অনুমতি দেয়।ASP.NET Core অ্যাপ্লিকেশনে CORS কনফিগার করা খুবই সহজ। Startup.cs
ফাইলে CORS পলিসি নির্ধারণ এবং ব্যবহারের জন্য নিচের পদক্ষেপগুলো অনুসরণ করা যায়।
CORS পলিসি কনফিগার করা:
ConfigureServices
মেথডে CORS পলিসি কনফিগার করুন। এখানে আপনি নির্ধারণ করবেন যে কোন ডোমেইন থেকে অ্যাক্সেস অনুমোদিত হবে।
public void ConfigureServices(IServiceCollection services)
{
// CORS পলিসি কনফিগার করা
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("https://www.example.com")
.AllowAnyHeader()
.AllowAnyMethod());
});
services.AddControllers();
}
CORS পলিসি ব্যবহৃত করা:
Configure
মেথডে CORS পলিসি ব্যবহার করুন। সাধারণত, CORS সেটিংস অ্যাপ্লিকেশন মাউন্ট হওয়ার আগে ব্যবহার করা হয়, যেমন UseCors()
।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseHsts();
}
app.UseCors("AllowSpecificOrigin"); // CORS পলিসি অ্যাপ্লাই করা
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
এখন, অ্যাপ্লিকেশনটি https://www.example.com
ডোমেইন থেকে আসা রিকোয়েস্টগুলো অনুমোদন করবে।
Allow All Origins: সব ধরনের ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করার জন্য CORS কনফিগার করা।
services.AddCors(options =>
{
options.AddPolicy("AllowAllOrigins", builder => builder.AllowAnyOrigin().AllowAnyHeader().AllowAnyMethod());
});
Allow Multiple Origins: নির্দিষ্ট একাধিক ডোমেইন থেকে রিকোয়েস্ট গ্রহণ করা।
services.AddCors(options =>
{
options.AddPolicy("AllowMultipleOrigins", builder =>
builder.WithOrigins("https://www.example1.com", "https://www.example2.com")
.AllowAnyHeader()
.AllowAnyMethod());
});
CORS মূলত ব্রাউজার সাইড নিরাপত্তা ব্যবস্থা, যা ডেভেলপারদের শর্তানুযায়ী রিসোর্স শেয়ারিং নিয়ন্ত্রণ করতে সাহায্য করে। এটি নিরাপত্তা দৃষ্টিকোণ থেকে গুরুত্বপূর্ণ, কারণ এটি সংবেদনশীল ডেটার অ্যাক্সেস শুধুমাত্র নির্দিষ্ট ডোমেইনগুলো থেকে সীমাবদ্ধ করে।
CORS (Cross-Origin Resource Sharing) একটি গুরুত্বপূর্ণ নিরাপত্তা ব্যবস্থা যা ওয়েব অ্যাপ্লিকেশনগুলোকে বিভিন্ন ডোমেইন থেকে রিসোর্স অ্যাক্সেসের অনুমতি বা নিষেধাজ্ঞা দেয়। ASP.NET Core-এ CORS কনফিগারেশন খুবই সহজ এবং সেটি API সিকিউরিটি এবং বিভিন্ন ক্লায়েন্ট থেকে রিসোর্স শেয়ারিং নিয়ন্ত্রণ করতে ব্যবহৃত হয়। এর মাধ্যমে ডেভেলপাররা নির্দিষ্ট ডোমেইন বা হেডার থেকে API রিকোয়েস্ট গ্রহণ বা প্রত্যাখ্যান করতে পারেন। CORS পলিসি কনফিগারেশন এবং নিরাপত্তা নিশ্চিতকরণের মাধ্যমে, ওয়েব অ্যাপ্লিকেশন আরো নিরাপদ এবং কার্যকরী হয়ে ওঠে।
CORS (Cross-Origin Resource Sharing) হল একটি নিরাপত্তা প্রোটোকল যা ওয়েব ব্রাউজারগুলোকে নির্দিষ্ট নিয়মের মাধ্যমে একে অপরের ডোমেইন থেকে রিসোর্স শেয়ার করতে অনুমতি দেয়। এটি মূলত ওয়েব অ্যাপ্লিকেশন এবং API এর মধ্যে ক্রস-অরিজিন অনুরোধ (cross-origin requests) পরিচালনা করতে ব্যবহৃত হয়। একটি "অরিজিন" বলতে বোঝানো হয় একটি নির্দিষ্ট স্কিমা (যেমন HTTP/HTTPS), ডোমেইন, এবং পোর্টের সমন্বয়। যখন একটি ওয়েব অ্যাপ্লিকেশন বা ব্রাউজার অন্য একটি অরিজিন থেকে ডেটা বা রিসোর্স অ্যাক্সেস করতে চায়, তখন CORS নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ডোমেইন বা অ্যাপ্লিকেশনগুলোই এই অনুরোধগুলো গ্রহণ করতে পারে।
যেমন, যদি আপনার একটি ওয়েব অ্যাপ্লিকেশন http://example.com থেকে অন্য একটি অ্যাপ্লিকেশন http://api.example.com এ GET, POST, PUT বা DELETE অনুরোধ পাঠাতে চায়, তবে CORS প্রোটোকল ব্যবহার করে আপনি নিশ্চিত করতে পারেন যে api.example.com ওই অনুরোধগুলো গ্রহণ করতে পারবে এবং তা নিরাপদভাবে প্রসেস করতে পারবে।
CORS প্রধানত HTTP হেডার এর মাধ্যমে কাজ করে। যখন একটি ওয়েব অ্যাপ্লিকেশন বা ব্রাউজার একটি ক্রস-অরিজিন অনুরোধ পাঠায়, তখন সার্ভার তার রেসপন্সে কিছু নির্দিষ্ট CORS হেডার পাঠায়, যা ব্রাউজারকে নির্দেশ দেয় যে এই অনুরোধটি অনুমোদিত কিনা।
এখানে কিছু গুরুত্বপূর্ণ CORS হেডারের উদাহরণ:
Access-Control-Allow-Origin: *
মানে যে সব অরিজিনের অনুরোধ গ্রহণ করা যাবে, আর Access-Control-Allow-Origin: http://example.com
মানে শুধুমাত্র http://example.com
ডোমেইনের অনুরোধই গ্রহণ করা হবে।Access-Control-Allow-Methods: GET, POST, PUT
।Access-Control-Allow-Headers: Content-Type, Authorization
।CORS কনফিগারেশন করার জন্য ASP.NET Core এ Startup.cs
ফাইলের ConfigureServices
মেথডে AddCors
পদ্ধতি ব্যবহার করা হয়। এখানে একটি সাধারণ উদাহরণ দেয়া হলো:
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin",
builder => builder.WithOrigins("http://example.com")
.AllowAnyMethod()
.AllowAnyHeader());
});
}
এখানে AllowSpecificOrigin
পলিসি কনফিগার করা হয়েছে, যা শুধুমাত্র http://example.com
ডোমেইন থেকে অনুরোধ গ্রহণ করবে।
এটি এরপর Configure
মেথডে ব্যবহার করা হয়:
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
app.UseCors("AllowSpecificOrigin");
// অন্যান্য Middleware গুলো
}
এভাবে CORS কনফিগার করা হলে, নির্দিষ্ট ডোমেইন বা অরিজিন থেকে API এর ক্রস-অরিজিন অনুরোধগুলো অনুমোদিত হবে।
CORS একটি নিরাপত্তা প্রোটোকল যা ওয়েব ব্রাউজারগুলোকে একটি ডোমেইন থেকে অন্য ডোমেইনের রিসোর্স অ্যাক্সেস করার অনুমতি দেয়। এটি মূলত ওয়েব অ্যাপ্লিকেশন এবং API এর মধ্যে ক্রস-অরিজিন অনুরোধ অনুমোদন করতে ব্যবহৃত হয়। CORS সার্ভারের মাধ্যমে HTTP হেডারের মাধ্যমে ক্রস-অরিজিন অনুরোধগুলো অনুমোদন বা বাতিল করা হয়, এবং এটি API বা সার্ভারের নিরাপত্তা রক্ষা করতে অত্যন্ত গুরুত্বপূর্ণ।
CORS (Cross-Origin Resource Sharing) একটি নিরাপত্তা ফিচার যা ওয়েব ব্রাউজারকে নিয়ন্ত্রণ করে, যাতে এক ডোমেইনের ওয়েব পেজ অন্য ডোমেইনের রিসোর্স অ্যাক্সেস করতে না পারে, যদি না তা নির্দিষ্টভাবে অনুমোদিত হয়। উদাহরণস্বরূপ, আপনি যদি একটি API তৈরি করেন এবং আপনার API থেকে অন্য ডোমেইন বা ওয়েব অ্যাপ্লিকেশন রিসোর্স অ্যাক্সেস করতে চায়, তবে CORS সেটিংস কনফিগার করা আবশ্যক।
ASP.NET Core অ্যাপ্লিকেশনে CORS কনফিগার করার মাধ্যমে আপনি নির্দিষ্ট ডোমেইন থেকে API রিকোয়েস্ট গ্রহণের অনুমতি দিতে পারেন। এটি নিরাপত্তা এবং সঠিক ডেটা প্রবাহ নিশ্চিত করতে সাহায্য করে।
প্রথমে, আপনাকে Startup.cs
ফাইলে CORS সেবা অ্যাড করতে হবে। ConfigureServices
মেথডে AddCors()
মেথড ব্যবহার করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
// CORS পলিসি কনফিগার করা
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin", builder =>
{
builder.WithOrigins("https://example.com") // অনুমোদিত ডোমেইন
.AllowAnyMethod() // অনুমোদিত HTTP মেথড
.AllowAnyHeader(); // অনুমোদিত হেডার
});
});
services.AddControllers();
}
এখানে AddPolicy
মেথডের মাধ্যমে আমরা একটি কাস্টম CORS পলিসি তৈরি করেছি, যেখানে শুধুমাত্র https://example.com
ডোমেইন থেকে রিকোয়েস্ট অনুমোদিত। আপনি এটি পরিবর্তন করে অন্যান্য ডোমেইনও যুক্ত করতে পারেন।
এখন, আপনাকে Configure
মেথডে UseCors
মেথড ব্যবহার করে CORS পলিসি অ্যাপ্লাই করতে হবে।
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseCors("AllowSpecificOrigin"); // এখানে পলিসি অ্যাপ্লাই করা
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
এখানে, UseCors
মেথডটি Configure
মেথডে কল করা হয়েছে যাতে কনফিগার করা CORS পলিসি অ্যাপ্লিকেশনটিতে ব্যবহৃত হয়।
CORS পলিসি আরো কাস্টমাইজ করা যেতে পারে বিভিন্ন পদ্ধতিতে, যেমন:
builder.WithOrigins("https://example.com", "https://anotherdomain.com")
builder.AllowCredentials();
builder.WithHeaders("Content-Type", "Authorization");
CORS কনফিগার করে আপনি নিয়ন্ত্রণ করতে পারেন কোন ডোমেইন আপনার API এর রিসোর্স অ্যাক্সেস করতে পারবে। ASP.NET Core তে CORS পলিসি কনফিগার করে আপনি নিরাপদভাবে এবং নির্দিষ্ট শর্তে API ব্যবহারকারীদের অনুমতি দিতে পারেন। CORS সেটআপের মাধ্যমে আপনার অ্যাপ্লিকেশনকে আরও নিরাপদ এবং কার্যকরী করা সম্ভব।
API নিরাপত্তা এবং ক্রস-ডোমেন রিকোয়েস্ট (Cross-Domain Requests) দুটি অত্যন্ত গুরুত্বপূর্ণ বিষয় যখন আমরা ওয়েব অ্যাপ্লিকেশন বা মোবাইল অ্যাপ্লিকেশন তৈরি করি। API নিরাপত্তা নিশ্চিত করে যে আপনার API কেবলমাত্র অনুমোদিত ব্যবহারকারীর জন্য অ্যাক্সেসযোগ্য, এবং ক্রস-ডোমেন রিকোয়েস্ট সঠিকভাবে কনফিগার করা থাকে যাতে এক ডোমেন থেকে অন্য ডোমেনে রিকোয়েস্ট নিরাপদে পাঠানো যায়। আসুন, এসবের উপর বিস্তারিত আলোচনা করি।
API সিকিউরিটি এমন একটি প্রক্রিয়া যা নিশ্চিত করে যে আপনার API-এর মাধ্যমে যে ডেটা আদান-প্রদান হচ্ছে তা সুরক্ষিত থাকে। API নিরাপত্তা ব্যবহারকারীর তথ্য, ডেটাবেস, এবং অন্যান্য সংবেদনশীল সম্পদকে রক্ষা করতে সাহায্য করে। API সিকিউরিটি বিভিন্ন পদ্ধতির মাধ্যমে নিশ্চিত করা হয়, যেমন:
প্রমাণীকরণ হল প্রক্রিয়া যার মাধ্যমে আপনি নিশ্চিত করেন যে কোন ব্যবহারকারী বা সিস্টেম API অ্যাক্সেস করার জন্য বৈধ। সাধারণত, API authentication এর জন্য OAuth, JWT (JSON Web Tokens), এবং API Keys ব্যবহৃত হয়।
প্রমাণীকরণের পর, আপনাকে নিশ্চিত করতে হবে যে ব্যবহারকারী যেটি করতে চাচ্ছে, তা করার জন্য তার অনুমতি আছে কিনা। সাধারণভাবে Role-based Access Control (RBAC) অথবা Claim-based Access Control ব্যবহৃত হয়। Authorization নিশ্চিত করে যে শুধুমাত্র অনুমোদিত ব্যবহারকারীই API-তে নির্দিষ্ট কার্যক্রম সম্পাদন করতে পারে।
HTTPS বা SSL/TLS প্রোটোকল API-র জন্য খুবই গুরুত্বপূর্ণ, কারণ এটি ট্রান্সমিশনের সময় ডেটা এনক্রিপ্ট করে। এটি man-in-the-middle attacks প্রতিরোধে সাহায্য করে এবং ক্লায়েন্ট ও সার্ভারের মধ্যে যোগাযোগের নিরাপত্তা নিশ্চিত করে।
API-তে অত্যধিক ট্র্যাফিক বা অনুরোধ থেকে সুরক্ষা পেতে rate limiting ব্যবহার করা হয়। এটি নিশ্চিত করে যে কোনো একক ব্যবহারকারী বা সিস্টেম খুব দ্রুত এবং বারবার রিকোয়েস্ট পাঠাচ্ছে না। এটি DDoS (Distributed Denial of Service) আক্রমণ প্রতিরোধে সাহায্য করে।
ক্রস-ডোমেন রিকোয়েস্ট হল এমন রিকোয়েস্ট যা একটি ওয়েব পেজ থেকে অন্য ডোমেনের একটি API সার্ভিসে পাঠানো হয়। সাধারণত, ব্রাউজারগুলো ক্রস-ডোমেন রিকোয়েস্টের জন্য Same-Origin Policy অনুসরণ করে, যার মানে হচ্ছে, একটি ওয়েব পেজ অন্য ডোমেনের রিসোর্স অ্যাক্সেস করতে পারবে না যদি না সেটি বিশেষভাবে অনুমোদিত হয়।
যেমন:
CORS হল একটি নিরাপত্তা ফিচার যা ওয়েব অ্যাপ্লিকেশনকে নিরাপদভাবে এক ডোমেন থেকে অন্য ডোমেনে রিকোয়েস্ট করতে দেয়। CORS কনফিগারেশন সার্ভারের মাধ্যমে সম্পন্ন করা হয়, যেখানে API সার্ভার জানিয়ে দেয় কোন ডোমেনগুলো তার রিসোর্স অ্যাক্সেস করতে পারবে এবং কোন HTTP মেথডগুলো অনুমোদিত হবে।
ASP.NET Core অ্যাপ্লিকেশনেই CORS কনফিগার করা যায়, এবং এটি সাধারণত Startup.cs ফাইলে করা হয়।
CORS কনফিগারেশন ইনস্টল করা: CORS কনফিগার করতে প্রথমে Microsoft.AspNetCore.Cors
প্যাকেজটি ইনস্টল করতে হবে।
NuGet প্যাকেজ:
dotnet add package Microsoft.AspNetCore.Cors
CORS কনফিগারেশন করা: Startup.cs
ফাইলে নিচের মতো কনফিগারেশন করতে হবে।
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
options.AddPolicy("AllowSpecificOrigin", builder =>
builder.WithOrigins("http://example.com")
.AllowAnyHeader()
.AllowAnyMethod());
});
services.AddControllers();
}
public void Configure(IApplicationBuilder app)
{
app.UseCors("AllowSpecificOrigin"); // CORS পলিসি ব্যবহার করা
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
}
এখানে AllowSpecificOrigin
পলিসি দিয়ে শুধুমাত্র http://example.com
ডোমেনকে API অ্যাক্সেস করার অনুমতি দেওয়া হয়েছে। আপনি AllowAnyOrigin()
ব্যবহার করে সব ডোমেনের জন্য অ্যাক্সেস খুলে দিতে পারেন, তবে এটি নিরাপত্তার জন্য ঝুঁকি তৈরি করতে পারে।
API সিকিউরিটি অত্যন্ত গুরুত্বপূর্ণ, কারণ এটি API ব্যবহারের সুরক্ষা নিশ্চিত করে এবং অ্যাক্সেস কন্ট্রোল প্রদান করে। Authentication, Authorization, এবং HTTPS এর মাধ্যমে API সুরক্ষা নিশ্চিত করা যায়। অন্যদিকে, CORS হল এক ডোমেন থেকে আরেক ডোমেনে রিকোয়েস্ট পাঠানোর নিরাপদ উপায়। ASP.NET Core-এ সহজেই CORS কনফিগার করে API নিরাপদভাবে ব্যবহারকারী বা সিস্টেমের জন্য অ্যাক্সেসযোগ্য করে তোলা যায়। API সিকিউরিটির বেস্ট প্র্যাকটিস অনুসরণ করে API এবং ব্যবহারকারী তথ্যের সুরক্ষা নিশ্চিত করা যেতে পারে।
common.read_more