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

C-এ ফরম্যাট স্ট্রিং ভালনারেবিলিটি (Format String Vulnerability) এবং প্রতিকার উদাহরণসহ


ফরম্যাট স্ট্রিং (Format String) - এটি একটি ASCII স্ট্রিং যা স্ট্রিং ফরম্যাট করার জন্য ব্যবহৃত হয়। এটি টেক্সট এবং ফরম্যাটিং প্যারামিটার দিয়ে গঠিত একটি ASCII স্ট্রিং।

প্রোগ্রামের আউটপুট ফরম্যাট করার জন্য C-এ বিভিন্ন ফরম্যাট স্ট্রিং রয়েছে।

ফরম্যাট স্ট্রিং ভালনারেবিলিটি (FORMAT STRING VULNERABILITIES)

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

উদাহরণ

#include<stdio.h> #include<string.h> int main(){    char buffer[100];    strncpy(buffer, "Hii ", 5);    printf(buffer);    return 0; }

প্রতিকার (PREVENTIONS)

ফরম্যাট স্ট্রিং ভালনারেবিলিটি প্রতিকার করার কিছু উপায় রয়েছে

  • ফরম্যাট স্ট্রিংকে প্রোগ্রামের অংশ হিসেবে ব্যবহার করার চেষ্টা করুন, ইনপুট ডেটা হিসেবে নয়। এগুলো "%s" স্ট্রিং ফরম্যাট ব্যবহার করে সহজে সমাধান করা যায়।

  • ফরম্যাট স্ট্রিং তৈরি করার জন্য কনস্ট্যান্ট ব্যবহার করুন এবং ভেরিয়েবল স্ট্রিংগুলো ফাংশন কলের আর্গুমেন্ট হিসেবে এক্সট্রাক্ট করুন, কনস্ট্যান্ট স্ট্রিংয়ে ব্যবহার না করে।

  • যে কেসগুলোতে কনস্ট্যান্ট এবং ভেরিয়েবল স্ট্রিং ইনিশিয়ালাইজেশন নয়ম মেনে চলা যায় না, সেখানে ফরম্যাট গার্ড (format guards) ব্যবহার করা উচিত।


  1. পাওয়ারপয়েন্ট ফরম্যাট পেইন্টার দিয়ে টেক্সট ফরম্যাট করার পদ্ধতি

  2. জাভাস্ক্রিপ্টে Date অবজেক্টকে hh:mm:ss ফরম্যাটে স্ট্রিং-এ রূপান্তর করার উপায়

  3. জাভাস্ক্রিপ্ট এরর এবং এক্সসেপশন হ্যান্ডলিং উদাহরণসহ

  4. C++-এ এক্সপ্রেশন ট্রি (Expression Tree) উদাহরণসহ