Data sanitization এবং validation হল ওয়েব অ্যাপ্লিকেশন নিরাপত্তা নিশ্চিত করার জন্য গুরুত্বপূর্ণ পদ্ধতি। CodeIgniter এই দুটি প্রক্রিয়াকে সহজভাবে পরিচালনা করতে সহায়তা করে, যা ইউজার ইনপুটকে সুরক্ষিত এবং সঠিক করে তোলে। এই দুটি পদ্ধতি বিভিন্ন ধরনের আক্রমণ যেমন SQL injection, XSS (Cross-Site Scripting), এবং CSRF (Cross-Site Request Forgery) প্রতিরোধে সহায়তা করে।
Sanitization হল একটি প্রক্রিয়া যার মাধ্যমে ইউজারের ইনপুট থেকে অবাঞ্ছিত বা বিপজ্জনক চরিত্র বা কোড মুছে ফেলা হয়। এটি ইনপুট ডেটাকে clean করে তোলে যাতে সেটি নিরাপদে প্রসেস করা যায়।
CodeIgniter-এর Input Class ইনপুট ডেটা স্যানিটাইজ করতে সাহায্য করে।
$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 রোধ করতে সহায়ক।
Validation হল এমন একটি প্রক্রিয়া যার মাধ্যমে ইনপুট ডেটা নির্দিষ্ট শর্তের সাথে মিলিয়ে যাচাই করা হয়, যাতে ইনপুট সঠিক ফরম্যাটে থাকে এবং প্রয়োজনীয় শর্ত পূরণ করে।
CodeIgniter Form Validation Class সরবরাহ করে, যা ইনপুট ভ্যালিডেশনকে সহজ করে তোলে।
প্রথমে 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()
মেথডের মাধ্যমে ফিল্ডের জন্য ভ্যালিডেশন রুলস নির্ধারণ করা হয়:
CodeIgniter-এর XSS Filtering স্বয়ংক্রিয়ভাবে ইনপুটের মধ্যে সম্ভাব্য XSS attacks প্রতিরোধ করে।
// ইউজার ইনপুট থেকে XSS ফিল্টারিং
$username = $this->security->xss_clean($this->input->post('username'));
// XSS ফিল্টারিংয়ের মাধ্যমে পটেনশিয়াল আক্রমণ প্রতিরোধ
এখানে xss_clean()
মেথড ইনপুটে থাকা JavaScript বা HTML tags মুছে ফেলবে যা XSS attack তৈরি করতে পারে।
CodeIgniter CSRF protection সক্রিয়ভাবে ফর্মের মাধ্যমে অবৈধ রিকোয়েস্টগুলো প্রতিরোধ করতে সহায়তা করে।
app/Config/Security.php
ফাইলে CSRF সক্রিয় করা:public $CSRFProtection = true;
<?= csrf_field(); ?>
এটি স্বয়ংক্রিয়ভাবে hidden CSRF token তৈরি করবে এবং সাবমিট করা ফর্মের মাধ্যমে এটি যাচাই করবে।
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" শব্দটি ইনপুট হিসাবে গ্রহণ করবে না।
ফাইল আপলোডের সময়ও স্যানিটাইজেশন এবং ভ্যালিডেশন অত্যন্ত গুরুত্বপূর্ণ। 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!";
}
এখানে:
jpg
, jpeg
, এবং png
ফাইল প্রকার অনুমোদিত।Read more