XSS (Cross-Site Scripting) হলো একটি সাধারণ নিরাপত্তা দুর্বলতা, যা ওয়েব অ্যাপ্লিকেশনে ব্যবহারকারী ইনপুট সঠিকভাবে যাচাই বা স্যানিটাইজ না করার কারণে ঘটে। XSS আক্রমণের মাধ্যমে একজন আক্রমণকারী ম্যালিশিয়াস স্ক্রিপ্ট ইনজেক্ট করে, যা ব্যবহারকারীর ব্রাউজারে কার্যকর হয়। এটি ব্যবহারকারীর ডেটা চুরি, সেশনের অপব্যবহার, বা অ্যাপ্লিকেশন হাইজ্যাক করতে পারে।
ASP.Net MVC-তে XSS আক্রমণ প্রতিরোধের জন্য বিভিন্ন পদ্ধতি এবং সুরক্ষা ব্যবস্থা প্রয়োগ করা হয়।
অ্যাপ্লিকেশনে ম্যালিশিয়াস স্ক্রিপ্ট স্থায়ীভাবে সংরক্ষিত হয় (যেমন ডাটাবেসে), যা অন্য ব্যবহারকারীর কাছে প্রদর্শিত হয়।
ম্যালিশিয়াস স্ক্রিপ্ট সরাসরি HTTP অনুরোধের মাধ্যমে পাঠানো হয় এবং অবিলম্বে ব্রাউজারে কার্যকর হয়।
জাভাস্ক্রিপ্ট দ্বারা ম্যালিশিয়াস কোড DOM (Document Object Model)-এ ইনজেক্ট করা হয় এবং ব্রাউজারে কার্যকর হয়।
ASP.Net MVC-তে Razor View Engine স্বয়ংক্রিয়ভাবে HTML Encoding করে। এটি ব্যবহারকারীর ইনপুট HTML এ সঠিকভাবে প্রদর্শন করে এবং XSS প্রতিরোধ করে।
<!-- Razor Encoding -->
<p>@Model.UserName</p>
এটি স্বয়ংক্রিয়ভাবে ইনপুট Model.UserName
-কে HTML Encode করে।
AntiXSS Microsoft-এর একটি সুরক্ষা লাইব্রেরি, যা ইনপুট স্যানিটাইজ করতে এবং ম্যালিশিয়াস কোড প্রতিরোধ করতে ব্যবহৃত হয়।
using Microsoft.Security.Application;
string safeInput = Sanitizer.GetSafeHtml(userInput);
ASP.Net MVC-তে ValidateInput
অ্যাট্রিবিউট ব্যবহার করে ইনপুট ভ্যালিডেশন নিশ্চিত করা যায়।
[ValidateInput(true)]
public ActionResult Submit(string userInput)
{
// Process input
}
যদি নির্দিষ্ট ফিল্ডে HTML ইনপুট প্রয়োজন হয়, তবে AllowHtml
অ্যাট্রিবিউট ব্যবহার করুন।
public class CommentModel
{
[AllowHtml]
public string Comment { get; set; }
}
Anti-Forgery Token ব্যবহার করে ফর্ম সাবমিশন যাচাই করা যায়, যা XSS আক্রমণ প্রতিরোধে সাহায্য করে।
View:
@Html.AntiForgeryToken()
<form method="post">
<input type="text" name="comment" />
<button type="submit">Submit</button>
</form>
Controller:
[ValidateAntiForgeryToken]
public ActionResult SubmitComment(string comment)
{
// Process comment
}
CSP ব্রাউজারকে নির্দিষ্ট করে দেয় যে কোন উত্স থেকে স্ক্রিপ্ট বা কন্টেন্ট লোড করা যাবে। এটি DOM-based XSS আক্রমণ প্রতিরোধে সহায়ক।
Web.config বা Middleware-এ CSP যোগ করা:
Content-Security-Policy: script-src 'self' https://trusted-source.com;
ব্যবহারকারীর ইনপুট সঠিকভাবে যাচাই করুন। শুধুমাত্র অনুমোদিত ইনপুট গ্রহণ করুন এবং ডাটাবেসে সংরক্ষণের আগে ইনপুট স্যানিটাইজ করুন।
if (Regex.IsMatch(input, @"^[a-zA-Z0-9]*$"))
{
// Process input
}
ইনপুট ডেটা যদি JavaScript-এ ব্যবহার করা হয়, তবে JavaScript Encoding ব্যবহার করুন।
<script>
var userInput = @Html.Raw(Json.Encode(Model.UserInput));
</script>
ASP.Net MVC-তে XSS আক্রমণ প্রতিরোধে সঠিক ইনপুট ভ্যালিডেশন, HTML Encoding, এবং Anti-Forgery Token এর মতো পদ্ধতি ব্যবহার অত্যন্ত কার্যকর। XSS আক্রমণের ঝুঁকি হ্রাস করার জন্য সর্বদা সুরক্ষিত কোডিং প্র্যাকটিস অনুসরণ করা উচিত এবং সর্বশেষ নিরাপত্তা টুল এবং লাইব্রেরি ব্যবহার করা উচিত।
common.read_more