Input Data Sanitization এবং Validation

Web Development - কোডইগনাইটার (Codeigniter) - CodeIgniter এর সিকিউরিটি |

Data sanitization এবং validation হল ওয়েব অ্যাপ্লিকেশন নিরাপত্তা নিশ্চিত করার জন্য গুরুত্বপূর্ণ পদ্ধতি। CodeIgniter এই দুটি প্রক্রিয়াকে সহজভাবে পরিচালনা করতে সহায়তা করে, যা ইউজার ইনপুটকে সুরক্ষিত এবং সঠিক করে তোলে। এই দুটি পদ্ধতি বিভিন্ন ধরনের আক্রমণ যেমন SQL injection, XSS (Cross-Site Scripting), এবং CSRF (Cross-Site Request Forgery) প্রতিরোধে সহায়তা করে।


1. Input Data Sanitization

Sanitization হল একটি প্রক্রিয়া যার মাধ্যমে ইউজারের ইনপুট থেকে অবাঞ্ছিত বা বিপজ্জনক চরিত্র বা কোড মুছে ফেলা হয়। এটি ইনপুট ডেটাকে clean করে তোলে যাতে সেটি নিরাপদে প্রসেস করা যায়।

CodeIgniter-এর Input Class ইনপুট ডেটা স্যানিটাইজ করতে সাহায্য করে।

উদাহরণ: Input Sanitization

$this->load->library('security');

// Get sanitized input
$username = $this->input->post('username', TRUE); // TRUE to sanitize
$password = $this->input->post('password', TRUE);

// Sanitization automatically applies XSS filtering

এখানে, TRUE প্যারামিটার স্যানিটাইজেশন প্রক্রিয়া চালু করে, যা ইনপুটের মধ্যে XSS attacks রোধ করতে সহায়ক।

2. Validation (ইনপুট ভ্যালিডেশন)

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

CodeIgniter Form Validation Class সরবরাহ করে, যা ইনপুট ভ্যালিডেশনকে সহজ করে তোলে।

Form Validation কনফিগারেশন

প্রথমে Form Validation Library লোড করতে হবে:

$this->load->library('form_validation');

এরপর, আপনি ফর্মের ইনপুটের জন্য ভ্যালিডেশন রুলস সেট করবেন।

উদাহরণ: ইনপুট ভ্যালিডেশন

$this->form_validation->set_rules('username', 'Username', 'required|min_length[5]|max_length[12]');
$this->form_validation->set_rules('password', 'Password', 'required|min_length[8]');

// ফর্ম ভ্যালিডেশন চালানো
if ($this->form_validation->run() == FALSE) {
    // ইনপুট ভ্যালিডেশন ব্যর্থ হলে
    echo validation_errors(); // এর মাধ্যমে ত্রুটির বার্তা দেখানো হবে
} else {
    // ইনপুট সঠিক হলে
    echo "Form Validation Successful!";
}

এখানে, set_rules() মেথডের মাধ্যমে ফিল্ডের জন্য ভ্যালিডেশন রুলস নির্ধারণ করা হয়:

  • required: ফিল্ডটি অবশ্যই পূর্ণ হতে হবে।
  • min_length[5]: মিনিমাম ৫ অক্ষর হতে হবে।
  • max_length[12]: সর্বাধিক ১২ অক্ষর হতে হবে।

3. XSS Filtering (Cross-Site Scripting Filtering)

CodeIgniter-এর XSS Filtering স্বয়ংক্রিয়ভাবে ইনপুটের মধ্যে সম্ভাব্য XSS attacks প্রতিরোধ করে।

উদাহরণ: XSS Filtering

// ইউজার ইনপুট থেকে XSS ফিল্টারিং
$username = $this->security->xss_clean($this->input->post('username'));

// XSS ফিল্টারিংয়ের মাধ্যমে পটেনশিয়াল আক্রমণ প্রতিরোধ

এখানে xss_clean() মেথড ইনপুটে থাকা JavaScript বা HTML tags মুছে ফেলবে যা XSS attack তৈরি করতে পারে।


4. CSRF Protection (Cross-Site Request Forgery)

CodeIgniter CSRF protection সক্রিয়ভাবে ফর্মের মাধ্যমে অবৈধ রিকোয়েস্টগুলো প্রতিরোধ করতে সহায়তা করে।

CSRF Protection কনফিগারেশন

  1. app/Config/Security.php ফাইলে CSRF সক্রিয় করা:
public $CSRFProtection = true;
  1. CSRF Token ফর্মে অন্তর্ভুক্ত করা: CodeIgniter নিজে CSRF token জেনারেট করে এবং ফর্মে যোগ করে। আপনাকে ফর্মে নিম্নলিখিত কোডটি যুক্ত করতে হবে:
<?= csrf_field(); ?>

এটি স্বয়ংক্রিয়ভাবে hidden CSRF token তৈরি করবে এবং সাবমিট করা ফর্মের মাধ্যমে এটি যাচাই করবে।


5. Custom Validation Rules

CodeIgniter আপনাকে কাস্টম ভ্যালিডেশন রুলস তৈরি করার সুযোগ দেয়। আপনি set_message() এবং callback_function ব্যবহার করে কাস্টম ভ্যালিডেশন রুলস যোগ করতে পারেন।

উদাহরণ: কাস্টম ভ্যালিডেশন রুল

// কাস্টম ভ্যালিডেশন রুল তৈরি
public function validate_username($str)
{
    if ($str == 'admin') {
        $this->form_validation->set_message('validate_username', 'The {field} field cannot be "admin".');
        return FALSE;
    }
    return TRUE;
}

$this->form_validation->set_rules('username', 'Username', 'required|callback_validate_username');

এখানে, validate_username() ফাংশন একটি কাস্টম ভ্যালিডেশন রুল হিসেবে কাজ করছে যা "admin" শব্দটি ইনপুট হিসাবে গ্রহণ করবে না।


6. Sanitizing and Validating Files

ফাইল আপলোডের সময়ও স্যানিটাইজেশন এবং ভ্যালিডেশন অত্যন্ত গুরুত্বপূর্ণ। CodeIgniter ফাইল আপলোডের জন্য সঠিক ফাইল টাইপ, সাইজ এবং এক্সটেনশন যাচাই করতে পারে।

উদাহরণ: ফাইল আপলোড ভ্যালিডেশন

$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'jpg|jpeg|png';
$config['max_size'] = 2048; // Max size in KB

$this->load->library('upload', $config);

if (!$this->upload->do_upload('userfile')) {
    echo $this->upload->display_errors();
} else {
    $data = $this->upload->data();
    echo "File uploaded successfully!";
}

এখানে:

  • allowed_types: শুধুমাত্র jpg, jpeg, এবং png ফাইল প্রকার অনুমোদিত।
  • max_size: ফাইল সাইজের সীমা 2MB (2048KB)।

সারাংশ

  • Sanitization হল ইনপুট ডেটা থেকে অবাঞ্ছিত বা বিপজ্জনক চরিত্র/কোড মুছে ফেলা, যা নিরাপত্তা উন্নত করে।
  • Validation হল ইনপুট ডেটা যাচাই করা, যাতে এটি সঠিক এবং প্রয়োজনীয় শর্ত পূরণ করে।
  • CodeIgniter XSS filtering এবং CSRF protection দিয়ে ইনপুট সুরক্ষা বাড়ায়।
  • কাস্টম ভ্যালিডেশন রুলস এবং ফাইল আপলোড ভ্যালিডেশনসহ ইনপুট স্যানিটাইজেশন এবং ভ্যালিডেশন প্রক্রিয়া নিরাপদ এবং কার্যকরী ওয়েব অ্যাপ্লিকেশন তৈরি করতে সহায়ক।
Content added By
Promotion