সার্ভারকে হ্যাকিং থেকে রক্ষা করা। যেকোনো সংস্করণ আক্রমণের বিরুদ্ধে ব্যাপক সুরক্ষা (OOG এবং অন্যান্য) নিয়মিত সর্বশেষ আপডেটগুলি ইনস্টল করুন

সার্ভারটিকে একবার এবং সর্বদা বাহ্যিক অ্যাক্সেস থেকে রক্ষা করা অসম্ভব, কারণ প্রতিদিন নতুন দুর্বলতা আবিষ্কৃত হয় এবং সার্ভার হ্যাক করার নতুন উপায় উপস্থিত হয়। আমরা এই নিবন্ধে অননুমোদিত অ্যাক্সেস থেকে সার্ভারগুলিকে রক্ষা করার বিষয়ে কথা বলব।

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

এটি বোঝা উচিত যে সার্ভার হ্যাকিংয়ের বিরুদ্ধে সুরক্ষা ব্যবস্থাগুলির একটি সেট, যার মধ্যে সার্ভারের ক্রিয়াকলাপের ধ্রুবক পর্যবেক্ষণ এবং সুরক্ষা উন্নত করার জন্য কাজ করা সহ। সার্ভারটিকে একবার এবং সর্বদা বাহ্যিক অ্যাক্সেস থেকে রক্ষা করা অসম্ভব, কারণ প্রতিদিন নতুন দুর্বলতা আবিষ্কৃত হয় এবং সার্ভার হ্যাক করার নতুন উপায় উপস্থিত হয়।

আমরা এই নিবন্ধে অননুমোদিত অ্যাক্সেস থেকে সার্ভারগুলিকে রক্ষা করার বিষয়ে কথা বলব।

সার্ভারগুলিকে অননুমোদিত অ্যাক্সেস থেকে রক্ষা করার উপায় এবং পদ্ধতি

সার্ভার শারীরিক সুরক্ষা

শারীরিক সুরক্ষা। এটা বাঞ্ছনীয় যে সার্ভারটি একটি সুরক্ষিত ডেটা সেন্টারে অবস্থিত, একটি বদ্ধ এবং রক্ষিত কক্ষে বহিরাগতদের অ্যাক্সেস থাকা উচিত নয়;

SSH প্রমাণীকরণ সেট আপ করুন

সার্ভারে অ্যাক্সেস সেট আপ করার সময়, পাসওয়ার্ডের পরিবর্তে SSH কী প্রমাণীকরণ ব্যবহার করুন, যেহেতু এই ধরনের কীগুলি অনেক বেশি কঠিন এবং কখনও কখনও ব্রুট ফোর্স ব্যবহার করে ক্র্যাক করা অসম্ভব।

আপনি যদি মনে করেন যে আপনার এখনও একটি পাসওয়ার্ড দরকার, তবে এটি প্রবেশ করার প্রচেষ্টার সংখ্যা সীমিত করতে ভুলবেন না।

আপনি লগ ইন করার সময় যদি আপনি এই ধরনের একটি বার্তা দেখতে দয়া করে মনে রাখবেন:

শেষ ব্যর্থ লগইন: মঙ্গলবার 28 সেপ্টেম্বর 12:42:35 MSK 2017 52.15.194.10 থেকে ssh:notty-এ
শেষ সফল লগইন করার পর থেকে 8243টি ব্যর্থ লগইন প্রচেষ্টা ছিল।

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

নিয়মিত সর্বশেষ আপডেট ইনস্টল করুন

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

শূন্য-দিনের দুর্বলতাকে কাজে লাগাতে পারে এমন আক্রমণ প্রতিরোধ করতে প্রতিদিন নতুন প্যাচ, আপডেট এবং বাগ/ভালনারেবিলিটি রিপোর্ট চেক করার পরামর্শ দেওয়া হয়। এটি করার জন্য, সফ্টওয়্যার ডেভেলপমেন্ট সংস্থার খবরে সাবস্ক্রাইব করুন, সামাজিক নেটওয়ার্কগুলিতে এর পৃষ্ঠাগুলি অনুসরণ করুন।

আপনার পাসওয়ার্ড সুরক্ষিত

এখন অবধি, সার্ভারে অ্যাক্সেস পাওয়ার সবচেয়ে সাধারণ উপায়গুলির মধ্যে একটি হল সার্ভারের পাসওয়ার্ড হ্যাক করা। অতএব, সুপরিচিত, কিন্তু তবুও প্রাসঙ্গিক সুপারিশগুলি মেনে চলুন যাতে সার্ভারটি অরক্ষিত না থাকে:

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

ফায়ারওয়াল

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

বিশেষ করে, একটি ফায়ারওয়াল সার্ভার থেকে রক্ষা করতে খুব সহায়ক ddos আক্রমণ, কারণ আপনি দ্রুত নিষিদ্ধ ফায়ারওয়াল নিয়ম তৈরি করতে পারেন এবং আইপি ঠিকানাগুলি যোগ করতে পারেন যেখান থেকে আক্রমণটি আসছে, বা নির্দিষ্ট প্রোটোকল ব্যবহার করে নির্দিষ্ট অ্যাপ্লিকেশনগুলিতে অ্যাক্সেস ব্লক করতে পারেন।

পর্যবেক্ষণ এবং অনুপ্রবেশ সনাক্তকরণ

  • আপনার সার্ভারে চলমান সফ্টওয়্যার এবং পরিষেবাগুলি সীমিত করুন। পর্যায়ক্রমে আপনার চলমান সমস্ত কিছু পরীক্ষা করুন এবং আপনি যদি আপনার কাছে অপরিচিত কোনো প্রক্রিয়া খুঁজে পান, তাহলে অবিলম্বে সেগুলি মুছুন এবং ভাইরাসগুলির জন্য স্ক্যান করা শুরু করুন।
  • টেম্পারিংয়ের লক্ষণগুলির জন্য পর্যায়ক্রমে পরীক্ষা করুন। নতুন তথ্য একটি হ্যাক নির্দেশ করতে পারে হিসাবব্যবহারকারীদের আপনি একটি ফাইল তৈরি, সরানো বা মুছে দেননি /etc/syslog.conf, মুছে ফেলা ফাইল/etc/ছায়াএবং /etc/passwrd।
  • আপনার সার্ভারের কর্মক্ষমতা নিরীক্ষণ করুন, এর স্বাভাবিক গতি দেখুন এবং থ্রুপুট, তাই আপনি বিচ্যুতি লক্ষ্য করতে পারেন, উদাহরণস্বরূপ, যখন সার্ভারে লোড স্বাভাবিকের চেয়ে উল্লেখযোগ্যভাবে বেশি হয়ে গেছে।

VPN এবং SSL/TLS এনক্রিপশন ব্যবহার করে

প্রয়োজনে দূরবর্তী অ্যাক্সেসসার্ভারে, এটি শুধুমাত্র নির্দিষ্ট আইপি ঠিকানা থেকে অনুমোদিত হওয়া উচিত এবং একটি VPN এর মাধ্যমে ঘটতে পারে।

নিরাপত্তা নিশ্চিত করার পরবর্তী পদক্ষেপটি হতে পারে SSL সেট আপ করা, যা আপনাকে শুধুমাত্র ডেটা এনক্রিপ্ট করতেই নয়, নেটওয়ার্ক অবকাঠামোতে অন্যান্য অংশগ্রহণকারীদের পরিচয় যাচাই করতে, তাদের উপযুক্ত শংসাপত্র প্রদানের অনুমতি দেবে।

সার্ভার নিরাপত্তা চেক

একটি পেন্টেস্ট পদ্ধতি ব্যবহার করে স্বাধীনভাবে সার্ভারের নিরাপত্তা পরীক্ষা করা একটি ভাল ধারণা, যেমন সম্ভাব্য দুর্বলতা খুঁজে বের করতে এবং সময়মত সেগুলি দূর করতে মডেলিং আক্রমণ করুন। এটিতে বিশেষজ্ঞদের জড়িত করার পরামর্শ দেওয়া হচ্ছে তথ্য নিরাপত্তাযাইহোক, সার্ভার হ্যাক করার জন্য প্রোগ্রাম ব্যবহার করে কিছু পরীক্ষা স্বাধীনভাবে করা যেতে পারে।

হ্যাকিং ছাড়া সার্ভারকে আর কী হুমকি দেয়?

একটি সার্ভার হ্যাকিং ছাড়া অন্য অনেক কারণে ব্যর্থ হতে পারে। উদাহরণস্বরূপ, এটি একটি ম্যালওয়্যার সংক্রমণ বা উপাদানগুলির একটির একটি শারীরিক ভাঙ্গন হতে পারে৷

অতএব, সার্ভার রক্ষার ব্যবস্থাগুলির মধ্যে অন্তর্ভুক্ত হওয়া উচিত:

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

ইন্টিগ্রাস বিশেষজ্ঞদের অভিজ্ঞতা আমাদের বলে যে এই ধরণের হুমকির বিরুদ্ধে সর্বোত্তম সুরক্ষা হল সার্ভার সুরক্ষা ব্যবস্থার ক্ষেত্রে সর্বোত্তম অনুশীলনের প্রয়োগ।

আমাদের গ্রাহকদের সার্ভারের নিরাপত্তা নিশ্চিত করতে, আমরা সরঞ্জামগুলির সংমিশ্রণ ব্যবহার করি: ফায়ারওয়াল, অ্যান্টিভাইরাস, নিরাপত্তা / ইভেন্ট ম্যানেজমেন্ট প্রযুক্তি (SIM / SEM), অনুপ্রবেশ সনাক্তকরণ / সুরক্ষা প্রযুক্তি (IDS / IPS), নেটওয়ার্ক আচরণ বিশ্লেষণ (NBA) প্রযুক্তি , এবং অবশ্যই নিয়মিত প্রতিরোধমূলক রক্ষণাবেক্ষণ সার্ভার এবং টার্নকি সুরক্ষিত সার্ভার রুমের ব্যবস্থা। এটি আপনাকে অন্য কারণে হ্যাকিং বা সার্ভার ব্যর্থতার ঝুঁকি কমাতে দেয়।

আমরা আপনার কোম্পানির সার্ভারগুলির একটি নিরাপত্তা অডিট পরিচালনা করতে, বিশেষজ্ঞদের সাথে পরামর্শ করতে এবং সার্ভার সরঞ্জামগুলির সুরক্ষা সেট আপ করার জন্য সমস্ত ধরণের কাজ সম্পাদন করতে প্রস্তুত৷

UNITWAY PW টিম থেকে সবাইকে হ্যালো। এই বিষয়ের সাথে আমরা আমাদের পক্ষ থেকে অন্যায় প্রতিযোগিতার অনুপস্থিতি এবং নিউডেস্টিনি প্রকল্প থেকে কালো, কুৎসিত, প্রতারণামূলক প্রতিযোগিতার অনুপস্থিতি প্রদর্শন করতে চাই।

নিউডেস্টিনি অ্যাডমিনিস্ট্রেটর loko9988, TyrikMan (গতকালের OOG আক্রমণটি Yoshkar Ola IP ঠিকানা থেকে ছিল), Killer_Pooh (ভোলজস্কি শহর থেকে একটি আক্রমণও রেকর্ড করা হয়েছিল) দ্বারা ব্যবহৃত আক্রমণগুলির সমাধানগুলির একটি তালিকা এখানে রয়েছে৷ আমাদের উপর আক্রমণের পাশাপাশি, আমরা অন্যান্য অনেক সার্ভারে আক্রমণের তথ্য পেয়েছি, যা আমাদের আবিষ্কারের সাথে যুক্ত ছিল। এই আক্রমণগুলি থেকে বেশ কয়েকটি সংশোধন প্রকাশ করে, আমরা আমাদের প্রকল্পের বিষয়ে জেব্রা পিডব্লিউ (মিরথোস্ট) প্রশাসকের স্পষ্টভাবে উদ্বিগ্ন অবস্থান সত্ত্বেও কারও উপর আক্রমণে আমাদের অ-সম্পৃক্ততা প্রদর্শন করি। আমাদের সম্পর্কে যারা হলুদ নিবন্ধের জন্য পড়েছিল তাদের প্রত্যেকের কাঁধে তাদের নিজস্ব মাথা রয়েছে তাদের বিরুদ্ধে আমরা একেবারেই কোনো ক্ষোভ রাখি না;


এবং এটি তাদের অ্যাকাউন্টের অংশ মাত্র।

এই বিষয় প্রকাশের একটি কারণ ছিল গুজব যা আমাদের কাছে পৌঁছেছিল। এই গুজবের সারমর্ম হল যে loko9988 শুধুমাত্র প্রতিযোগিতার কারণে সার্ভার আক্রমণ করে না, তার মাধ্যমে এই সার্ভারগুলিকে সুরক্ষা দেওয়ার জন্যও।

iptables ভিত্তিক OOG আক্রমণের বিরুদ্ধে সুরক্ষা:
প্রথমত, আমরা স্ক্রিপ্টেড ফায়ারওয়াল নিয়ম তৈরি করি, আপনি যা খুশি কল করতে পারেন।

iptables -A INPUT -p tcp -m multiport --dports 29000 -m দৈর্ঘ্য --দৈর্ঘ্য 500:65535 -j LOG --log-প্রিফিক্স "PW"

প্রসারিত করতে ক্লিক করুন...

এই নিয়মের সাথে, আমরা পোর্ট 29000 থেকে 500 থেকে 65535 বাইট পর্যন্ত মাপের সমস্ত গেম প্যাকেট রেকর্ড করি।

iptables -A INPUT -p tcp -m মাল্টিপোর্ট --dports 29000 -m দৈর্ঘ্য -- দৈর্ঘ্য 500:65535 -m সাম্প্রতিক -- নাম প্যাকেট -- সেট
iptables -A INPUT -p tcp -m মাল্টিপোর্ট --dports 29000 -m দৈর্ঘ্য --দৈর্ঘ্য 500:65535 -m সাম্প্রতিক --নাম প্যাকেট --আপডেট --সেকেন্ড 1 --hitcount 100 -j প্রত্যাখ্যান

প্রসারিত করতে ক্লিক করুন...

এই নিয়মগুলির সাথে, আমরা একজন ব্যবহারকারীকে ব্লক করি যদি সার্ভারটি পোর্ট 29000 (গেম) এ 1 সেকেন্ডে 500 - 65535 বাইট আকারের 100টির বেশি প্যাকেট পায়।

iptables -A INPUT -p tcp -m মাল্টিপোর্ট --dports 29000 -m দৈর্ঘ্য --দৈর্ঘ্য SIZE -m সাম্প্রতিক --name packet1 --set
iptables -A INPUT -p tcp -m মাল্টিপোর্ট --dports 29000 -m দৈর্ঘ্য --দৈর্ঘ্য SIZE -m সাম্প্রতিক --name packet1 --update --seconds 15 --hitcount 3 -j প্রত্যাখ্যান

প্রসারিত করতে ক্লিক করুন...

এই নিয়মগুলির সাথে, আমরা সেই ব্যবহারকারীদের ব্লক করি যারা 29000 পোর্টে 15 সেকেন্ডের মধ্যে 3টির বেশি প্যাকেট পাঠিয়েছে। SIZE - বাইটে প্যাকেটের আকার।
কিভাবে বাইটে প্যাকেটের আকার ট্র্যাক করবেন?
প্রথম নিয়মের পরে, যেখানে আমরা সমস্ত গেম প্যাকেজ লগ করি, আপনি সেগুলি ফাইলটিতে দেখতে পারেন /var/log/syslogবা দল dmesgসার্ভার কনসোলে।
syslog এ আক্রমণ হলে অল্প সময়ের মধ্যে অনেক অভিন্ন প্যাকেট থাকবে।

PW IN=ipip1 OUT= MAC=SRC= ব্যবহারকারীর আইপি ঠিকানাডিএসটি=*.*বিমস LEN=547 TOS=0x00 PREC=0x00 TTL=241 ID=13328 DF PROTO=TCP SPT=22511 DPT=63947 WINDOW=254 RES=0x00 ACK PSH URGP=0

প্রসারিত করতে ক্লিক করুন...

উপরের উদাহরণে, প্যাকেটের আকার হল "LEN=547"।

আমরা OOG সুরক্ষা সাজিয়েছি। আসুন অন্যান্য উপায়ে এগিয়ে যাই নিউডেস্টিনি প্রতিযোগিতা করে।
নৃশংস অ্যাকাউন্ট. এখানে সবকিছু সম্পূর্ণ সহজ:
#ব্রুট ফোর্স লগইন ব্লক করুন

iptables -A INPUT -p tcp -m multiport --dports 29000 -m conntrack --ctstate NEW -m সাম্প্রতিক --name brute --set
iptables -A INPUT -p tcp -m multiport --dports 29000 -m conntrack --ctstate NEW -m সাম্প্রতিক --name brute --update --seconds 30 --hitcount 3 -j প্রত্যাখ্যান

প্রসারিত করতে ক্লিক করুন...

এই নিয়মের সাথে, আমরা 30 সেকেন্ডের জন্য ব্যবহারকারীর আইপি ব্লক করি যদি সে 29000 পোর্টে সংযোগ করার জন্য 3টির বেশি অনুরোধ করে থাকে।
  • iptables এর মাধ্যমে গেমিং ব্যতীত পোর্টগুলিতে সম্পূর্ণ সীমাবদ্ধতা তৈরি করুন।
  • একটি কোড শব্দ সহ ssh কী (কী) ব্যবহার করে সার্ভারের সাথে সংযোগ করুন।
  • ব্যবহার করুন সর্বশেষ সংস্করণ mysql, apache2 এবং অন্যান্য গুরুত্বপূর্ণ প্যাকেজ।
  • OOG এর মাধ্যমে লোড করার পরে, লগরোটেট ব্যবহার করুন, অন্যথায় যখন ব্যাকআপ lairs RAMআপনার সার্ভার সম্পূর্ণরূপে ব্যবহার করা হবে. এর ফলে হ্যাক হতে পারে।
  • গেম সার্ভারে তৃতীয় পক্ষের সফ্টওয়্যার ব্যবহার করবেন না।
  • একটি কাস্টম প্লেয়ার পাসওয়ার্ড ফিল্টার ব্যবহার করুন. মাত্র কয়েক ঘন্টার মধ্যে, আমাদের লগইনে 50,000 টিরও বেশি অবৈধ অনুমোদনের প্রচেষ্টা হয়েছে৷ আমাদের 30% খেলোয়াড়ের এই লগইন-পাসওয়ার্ড জোড়া থেকে একই লগইন ছিল।
আমরা ন্যায্য প্রতিযোগিতা পছন্দ করি; আক্রমণ করার জন্য আমাদের কাছে সময় বা অতিরিক্ত অর্থ নেই। এই লোকদের সাথে জগাখিচুড়ি করবেন না, এটি খারাপভাবে শেষ হতে পারে।

বেশিরভাগ প্রোগ্রামকে অবশ্যই নির্দিষ্ট ডেটা প্রবেশের মাধ্যমে ব্যবহারকারীর সাথে ইন্টারঅ্যাক্ট করতে হবে, তা পুরো নাম, উচ্চতা, ডাটাবেসে প্রবেশ করার জন্য ওজন, বা কিছু বস্তুর জ্যামিতিক মাত্রা যা কিছু গণনা করা প্রয়োজন। এই সমস্ত ডেটা ব্যবহারকারীর দ্বারা প্রবেশ করা হয় - একজন ব্যক্তি, যার মানে যে কোনও কিছু প্রতিক্রিয়ায় আসতে পারে। ব্যবহারকারীর বয়সের পরিবর্তে শব্দে এটি লিখলে প্রোগ্রামের আউটপুট কী হবে? সম্ভবত, প্রোগ্রামটি ক্র্যাশ বা হিমায়িত হবে, তবে এটি যদি "মূর্খ সুরক্ষা" থাকে তবে তা নয়।

কেন একটি প্রোগ্রাম ক্র্যাশ বা হিমায়িত হতে পারে? প্রোগ্রামটি অক্ষরের সেটটিকে একটি সংখ্যায় রূপান্তর করার চেষ্টা করবে, যা সম্ভব হবে না, যার অর্থ হল অ্যাপ্লিকেশনটির আরও অপারেশন সংজ্ঞায়িত করা হয়নি। অতএব, প্রোগ্রামের কাঠামোটি সংগঠিত করা খুব গুরুত্বপূর্ণ যাতে প্রবেশ করার সময় অপ্রত্যাশিতডেটা প্রোগ্রামের জন্য (প্রয়োজনীয় বিন্যাসের দৃষ্টিকোণ থেকে ভুল: একটি সংখ্যা প্রয়োজন, তবে একটি শব্দ প্রবেশ করানো হয়েছে), অ্যাপ্লিকেশনটি ক্র্যাশ হয়নি, তবে ব্যবহারকারীকে জানিয়েছিল যে একটি ত্রুটি ঘটেছে এবং ইনপুটটি পুনরাবৃত্তি করতে বলা হয়েছে। এটি "ফুল প্রুফ"।

সি-তে ফুলপ্রুফিং বাস্তবায়ন করা

বিভিন্ন সাংখ্যিক (int, double...) ডেটা প্রবেশের জন্য ভাল ফুলপ্রুফিং বাস্তবায়নের জন্য, সংখ্যাগুলিকে নয়, সম্পূর্ণ ইনপুট স্ট্রিং পড়তে হবে এবং শুধুমাত্র তারপর ইনপুট বিশ্লেষণ করতে হবে৷ সি ল্যাঙ্গুয়েজের একটি খুব ভালো ফাংশন sscanf(const char *, const char *, args) রয়েছে, যা scanf(const char *, args) ফাংশনের মতোই কাজ করে, সফলভাবে পঠিত আর্গুমেন্টের সংখ্যা ফেরত দেয়, শুধুমাত্র ডেটা পড়া হয় না। স্ট্যান্ডার্ড ইনপুট স্ট্রীম থেকে, কিন্তু স্ট্রিং থেকে প্রথম আর্গুমেন্ট হিসাবে এটিতে পাস করা হয়েছে।

আসুন ফাংশনের কিছু উদাহরণ দেখি যা sscanf ফাংশন ব্যবহার করে বোকা চেকিং বাস্তবায়ন করে।

ভুল ইনপুট চেক করে একটি পূর্ণসংখ্যা প্রবেশ করানো

int get_integer(const char *msg) ( char উত্তর; // লাইন পড়ার জন্য int n; // চূড়ান্ত পূর্ণসংখ্যা printf("%s", msg); // প্রদর্শন প্রম্পট fgets(উত্তর, sizeof(উত্তর), stdin); একটি পূর্ণসংখ্যা পড়ার সময় // লাইন পড়ুন (উত্তর, সাইজফ(উত্তর), stdin // এবং লাইনটি আবার পড়ুন ) রিটার্ন n // সঠিক পূর্ণসংখ্যা দিন )

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

ভুল ইনপুট চেক করার সাথে একটি বাস্তব সংখ্যা প্রবেশ করান৷

ডাবল get_double(const char *msg) ( char উত্তর; // লাইন পড়তে ডবল x; // চূড়ান্ত বাস্তব সংখ্যা printf("%s", msg); // একটি ইনপুট প্রম্পট প্রদর্শন করুন fgets(উত্তর, sizeof(উত্তর), stdin; ত্রুটি fgets (উত্তর, sizeof(উত্তর), stdin // এবং লাইনটি আবার পড়ুন ) এক্স রিটার্ন করুন // সঠিক আসল নম্বর দিন

স্থানাঙ্ক সমতলে একটি বিন্দু প্রবেশ করানো (দুটি বাস্তব ক্ষেত্র সহ কাঠামো)

// ডেটা স্ট্রাকচারের বর্ণনা typedef struct point_t ( ডাবল x; // x স্থানাঙ্ক ডবল y; // y স্থানাঙ্ক ) point_t; point_t get_point(const char *msg) ( char উত্তর; // লাইন পড়ার জন্য point_t পয়েন্ট; // চূড়ান্ত পয়েন্ট printf("%s", msg); // একটি ইনপুট প্রম্পট প্রদর্শন করুন fgets(উত্তর, sizeof(উত্তর), stdin ); // লাইন পড়ুন // যতক্ষণ না উভয় পয়েন্ট স্থানাঙ্ক পড়া হয় (sscanf(উত্তর, "(%lf,%lf)", &point.x, &point.y) != 2) ( printf("ভুল ইনপুট। আবার চেষ্টা করুন: "); // একটি ত্রুটি বার্তা প্রদর্শন করুন fgets(উত্তর, sizeof(উত্তর), stdin); // এবং লাইনটি আবার পড়ুন ) রিটার্ন পয়েন্ট; // সঠিক পয়েন্ট ফেরত দিন )

উদাহরণগুলি থেকে দেখা যায়, sscanf ফাংশনের বৈশিষ্ট্যটি পঠিত আর্গুমেন্টের সংখ্যা প্রদান করে আপনাকে নির্দিষ্ট বিন্যাসে প্রবেশ করা ডেটার সঠিকতা নিয়ন্ত্রণ করতে দেয় এবং পুরো লাইনটি পড়া স্পেস অক্ষর বা লাইন ব্রেক হওয়া থেকে রক্ষা করে। "\n" ইনপুট স্ট্রীমে থাকবে, যা প্রায়শই আপনাকে নষ্ট করতে বাধ্য করে এটি একটি ত্রুটি খুঁজে পেতে এক ঘন্টা বা এমনকি একটি দিনও নেয় না৷

পর্যালোচনা