Secure coding হল এমন একটি প্রক্রিয়া যেখানে সফটওয়্যার কোডিং করার সময় সুরক্ষা নিশ্চিত করা হয়, যাতে অ্যাপ্লিকেশনটি বিভিন্ন ধরনের আক্রমণ যেমন SQL Injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF) ইত্যাদির থেকে সুরক্ষিত থাকে। CodeIgniter এর সুরক্ষা বৈশিষ্ট্যগুলো ব্যবহার করে, আপনি অ্যাপ্লিকেশনটির নিরাপত্তা শক্তিশালী করতে পারেন।
নিরাপদ কোডিং অভ্যাসের কিছু মূল দিক CodeIgniter-এ নিম্নরূপ:
সব ধরনের ইউজার ইনপুট নিরাপদে গ্রহণ করা প্রয়োজন, যাতে এটি SQL ইনজেকশন বা XSS আক্রমণের কারণ না হয়। CodeIgniter এ validation এবং sanitization সহজেই করা যায়।
Validation লাইব্রেরি ব্যবহার করে ইনপুট ভ্যালিডেশন করা যায়:
$validation = \Config\Services::validation();
$validation->setRules([
'username' => 'required|min_length[3]|max_length[20]',
'email' => 'required|valid_email'
]);
if (!$validation->withRequest($this->request)->run()) {
return redirect()->back()->withInput()->with('errors', $validation->getErrors());
}
XSS আক্রমণ প্রতিরোধ করার জন্য xss_clean() ফাংশন ব্যবহার করুন:
$this->request->getPost('username');
$username = $this->request->getVar('username', FILTER_SANITIZE_STRING);
এছাড়াও, esc()
ফাংশন ব্যবহার করে HTML ইনপুট স্যানিটাইজ করা যায়:
echo esc($user_input);
SQL ইনজেকশন একটি সাধারণ আক্রমণ যেখানে আক্রমণকারী সরাসরি SQL কোড ইনজেক্ট করে ডেটাবেস অ্যাক্সেস করতে পারে। CodeIgniter এ Query Builder এবং Prepared Statements ব্যবহার করলে SQL ইনজেকশন প্রতিরোধ করা যায়।
CodeIgniter এর Query Builder নিরাপদভাবে ডেটাবেস অপারেশন পরিচালনা করে। উদাহরণ:
$builder = $db->table('users');
$builder->where('id', $id); // SQL ইনজেকশন প্রতিরোধ
$query = $builder->get();
যতটা সম্ভব Prepared Statements ব্যবহার করুন:
$sql = "SELECT * FROM users WHERE email = :email:";
$query = $db->query($sql, ['email' => $email]);
এটি SQL ইনজেকশন রোধে সহায়ক, কারণ কোয়েরির প্যারামিটারগুলি আলাদা করা হয় এবং ইনপুট ডেটা সরাসরি SQL কোডে ইনজেক্ট হয় না।
XSS আক্রমণ হয় যখন আক্রমণকারী HTML বা JavaScript কোড ইনজেক্ট করে এবং এটি অন্য ব্যবহারকারীর ব্রাউজারে রান হতে দেয়। CodeIgniter এ XSS প্রতিরোধ করার জন্য ইনপুট এবং আউটপুট স্যানিটাইজেশন করা উচিত।
CodeIgniter-এর Security ক্লাস ব্যবহার করে XSS স্যানিটাইজেশন করা যায়:
$clean_input = $this->security->xss_clean($this->request->getPost('user_input'));
যতটা সম্ভব esc() ফাংশন ব্যবহার করুন, যা HTML আউটপুট স্যানিটাইজ করতে সহায়ক:
echo esc($user_input); // XSS আক্রমণ প্রতিরোধ
CSRF আক্রমণ হল এমন একটি আক্রমণ যেখানে আক্রমণকারী ব্যবহারকারীর অনুগ্রহে অপরিচিত বা ক্ষতিকর রিকোয়েস্ট পাঠানোর চেষ্টা করে। CodeIgniter CSRF সুরক্ষা স্বয়ংক্রিয়ভাবে সক্রিয় থাকে, তবে আপনি এটি কনফিগার করতে পারেন।
app/Config/Filters.php
ফাইলে CSRF ফিল্টার সক্রিয় করুন:
public $filters = [
'csrf' => ['before' => ['post', 'put', 'delete']],
];
CSRF টোকেন ফর্মে ব্যবহার করুন:
<?= csrf_field() ?>
এটি একটি সিকিউরিটি টোকেন তৈরি করে, যা ব্যবহারকারীর রিকোয়েস্ট নিশ্চিত করে যে এটি বৈধ এবং আক্রমণকারী দ্বারা তৈরি নয়।
ফাইল আপলোড করার সময়, ফাইলের টাইপ এবং সাইজ যাচাই করা উচিত যাতে ক্ষতিকর স্ক্রিপ্ট আপলোড করা না যায়।
$config['allowed_types'] = 'gif|jpg|png|pdf'; // শুধুমাত্র নির্দিষ্ট ফাইল টাইপ অনুমোদন
$config['max_size'] = 1024; // ফাইলের সর্বোচ্চ সাইজ (KB)
$this->upload->initialize($config);
CodeIgniter এর File Upload Class ইনপুট ফাইলের নিরাপত্তা নিশ্চিত করার জন্য XSS Clean ফাংশন ব্যবহার করে:
$config['xss_clean'] = true; // ফাইল সুরক্ষা চালু
পাসওয়ার্ড হ্যাশিং করার সময় password_hash()
এবং password_verify()
ফাংশন ব্যবহার করুন, যা পাসওয়ার্ড সুরক্ষিত রাখতে সাহায্য করে।
$password = password_hash($user_password, PASSWORD_DEFAULT);
if (password_verify($input_password, $stored_hash)) {
// পাসওয়ার্ড সঠিক
} else {
// পাসওয়ার্ড ভুল
}
Session hijacking এবং fixation প্রতিরোধ করার জন্য সেশন সুরক্ষা নিশ্চিত করা উচিত।
app/Config/App.php
ফাইলে Secure Session নিশ্চিত করুন:
public $session = [
'driver' => 'CodeIgniter\Session\Handlers\DatabaseHandler',
'cookieSecure' => true, // HTTPS ব্যবহারের জন্য
];
public $session = [
'lifeTime' => 7200, // সেশন টাইমআউট (2 ঘণ্টা)
];
অপ্রয়োজনীয় ত্রুটি বার্তা ব্যবহারকারীর কাছে প্রদর্শন না করার জন্য ত্রুটি লগিং এবং ত্রুটি হ্যান্ডলিং ব্যবহার করা উচিত।
app/Config/Constants.php
ফাইলে environment নির্ধারণ করুন:
define('ENVIRONMENT', 'production'); // প্রকশনে থাকলে ত্রুটি বার্তা বন্ধ
log_message('error', 'This is an error message.');
Secure coding practices CodeIgniter-এ নিরাপত্তা নিশ্চিত করার জন্য অত্যন্ত গুরুত্বপূর্ণ। Input Validation, Password Hashing, SQL Injection, XSS, CSRF, এবং File Upload Security ব্যবস্থাগুলি ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনকে আক্রমণ থেকে সুরক্ষিত রাখতে পারেন। CodeIgniter এর বিল্ট-ইন ফিচার এবং নিরাপত্তা ব্যবস্থা ব্যবহার করে আপনি একটি সুরক্ষিত ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন।
Read more