Input Validation এবং Sanitization গাইড ও নোট

Web Development - জাভাস্ক্রিপ্ট রেগএক্সপি (Javascript RegExp) - RegExp এর Security Considerations
249

Input Validation এবং Sanitization হল ওয়েব অ্যাপ্লিকেশন নিরাপত্তার অত্যন্ত গুরুত্বপূর্ণ দিক। ব্যবহারকারীর ইনপুটকে সঠিকভাবে যাচাই (validate) এবং শোধন (sanitize) না করলে, অ্যাপ্লিকেশনটি SQL injection, cross-site scripting (XSS), command injection, এবং অন্যান্য নিরাপত্তা সমস্যা তৈরি করতে পারে। এই দুটি প্রক্রিয়া সঠিকভাবে প্রয়োগ করা ওয়েব অ্যাপ্লিকেশনগুলির নিরাপত্তা নিশ্চিত করার জন্য অপরিহার্য।


Input Validation কী?

Input Validation হল একটি প্রক্রিয়া যেখানে ব্যবহারকারীর ইনপুট যাচাই করা হয়, যাতে নিশ্চিত হওয়া যায় যে ইনপুটটি সঠিক ফরম্যাটে এবং প্রয়োজনীয় শর্ত অনুযায়ী রয়েছে। এই প্রক্রিয়া লক্ষ্য করে সঠিক এবং অনুমোদিত ইনপুট গ্রহণ করা।

Input Validation এর উদ্দেশ্য:

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

Input Validation এর উদাহরণ:

  1. ইমেইল যাচাই:
function validateEmail(email) {
    const regex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6}$/;
    return regex.test(email);
}

console.log(validateEmail("example@example.com"));  // true
  1. ইউজারনেম যাচাই:
function validateUsername(username) {
    const regex = /^[a-zA-Z0-9]{5,15}$/;  // 5 থেকে 15 অক্ষরের মধ্যে
    return regex.test(username);
}

console.log(validateUsername("user123"));  // true

Input Sanitization কী?

Input Sanitization হল একটি প্রক্রিয়া যেখানে ব্যবহারকারীর ইনপুটটি "শোধন" বা "ফিল্টার" করা হয়, যাতে ক্ষতিকর উপাদান যেমন JavaScript কোড, HTML ট্যাগ ইত্যাদি অ্যাপ্লিকেশনে প্রবাহিত হতে না পারে। Sanitization-এ ইনপুটটি সম্পূর্ণরূপে নিরাপদ করে তোলা হয়।

Input Sanitization এর উদ্দেশ্য:

  • ক্ষতিকর কোড অপসারণ: ক্ষতিকর কোড বা স্নিপেট যেমন XSS আক্রমণ রোধ করা।
  • বিশ্বাসযোগ্যতা: কোনো অগ্রহণযোগ্য বা অবৈধ ডেটা এড়িয়ে চলা।
  • নিরাপত্তা: ব্যবহারকারীর ইনপুট থেকে যেকোনো ধরনের আক্রমণ প্রতিরোধ করা।

Input Sanitization এর উদাহরণ:

  1. HTML Sanitize করা:
function sanitizeInput(input) {
    return input.replace(/<[^>]*>/g, '');  // সব HTML ট্যাগ অপসারণ
}

let unsafeInput = "<script>alert('XSS Attack');</script>";
let safeInput = sanitizeInput(unsafeInput);
console.log(safeInput);  // alert('XSS Attack');
  1. URL Sanitization:
function sanitizeURL(url) {
    const regex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i;
    return regex.test(url);
}

let url = "http://example.com";
console.log(sanitizeURL(url));  // true

Input Validation এবং Sanitization এর মধ্যে পার্থক্য

  • Input Validation হল ব্যবহারকারীর ইনপুট যাচাই করে দেখার প্রক্রিয়া, যাতে শুধুমাত্র সঠিক এবং অনুমোদিত ডেটা গ্রহণ করা হয়।
  • Input Sanitization হল ইনপুটটি শোধন করার প্রক্রিয়া, যাতে ক্ষতিকর কোড বা অবাঞ্ছিত ট্যাগ বা স্নিপেট অপসারণ করা হয়।

Input Validation এবং Sanitization এর সংমিশ্রণ

একটি নিরাপদ অ্যাপ্লিকেশন তৈরির জন্য Input Validation এবং Sanitization একসাথে ব্যবহার করা অত্যন্ত গুরুত্বপূর্ণ। যদি শুধুমাত্র একটি পদ্ধতি ব্যবহার করা হয়, তবে অন্যটির মাধ্যমে হতে পারে এমন আক্রমণ প্রতিরোধ করা সম্ভব হবে না। উদাহরণস্বরূপ, SQL injection রোধ করার জন্য ইনপুটটি যাচাই এবং শোধন উভয়ই প্রয়োজন।

উদাহরণ: ইনপুট যাচাই এবং শোধন একসাথে ব্যবহার করা

function validateAndSanitize(input) {
    // Validate input
    const isValid = /^[a-zA-Z0-9 ]{3,20}$/.test(input);  // ৩ থেকে ২০ অক্ষর অনুমোদিত
    if (!isValid) {
        return "Invalid input";
    }
    
    // Sanitize input
    return input.replace(/<[^>]*>/g, '');  // HTML ট্যাগ অপসারণ
}

let userInput = "<script>alert('XSS');</script>";
console.log(validateAndSanitize(userInput));  // "alert('XSS');"

নিরাপত্তার জন্য ভালো অভ্যাস

  1. Server-side validation: ব্যবহারকারীর ইনপুট শুধু ক্লায়েন্ট সাইডে নয়, সঠিকভাবে server-side validation করা উচিত। কারণ, ক্লায়েন্ট সাইডের validation সহজে বাইপাস করা যেতে পারে।
  2. Prepared Statements: SQL injection রোধ করার জন্য, prepared statements বা parameterized queries ব্যবহার করা উচিত।
  3. Use well-maintained libraries: Sanitization এর জন্য পছন্দসই লাইব্রেরি যেমন DOMPurify বা sanitize-html ব্যবহার করা যেতে পারে, যা উন্নত নিরাপত্তা নিশ্চিত করে।
  4. Avoid direct HTML insertion: HTML ইনপুট নেওয়ার সময় ব্যবহারকারীর ইনপুট সরাসরি HTML এ ইনসার্ট করা উচিত নয়। এর বদলে, ডেটা টেক্সট কনটেন্ট হিসেবে প্রক্রিয়াকরণ করা উচিত।

সারাংশ

Input Validation এবং Sanitization উভয়ই ওয়েব অ্যাপ্লিকেশনের নিরাপত্তা নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ। Validation এর মাধ্যমে সঠিক ইনপুট নিশ্চিত করা হয়, এবং sanitization এর মাধ্যমে ক্ষতিকর কোড বা অক্ষর অপসারণ করা হয়। এই দুটি প্রক্রিয়া একসাথে প্রয়োগ করে আপনি অ্যাপ্লিকেশনটির নিরাপত্তা এবং ব্যবহারের অভিজ্ঞতা উন্নত করতে পারেন।

Content added By
Promotion

Are you sure to start over?

Loading...