ডিফল্ট আপনাকে ডুবাতে পারে
TL;DR: অজানা প্রতিক্রিয়াগুলিকে অননুমোদিত হিসাবে বিবেচনা করুন, বৈধ হিসাবে নয়।
সমস্যা
- নিরাপত্তা ঝুঁকি
- অজানা মামলা উপেক্ষা করা
- ত্রুটি ভুল ব্যাখ্যা
- বৈধ রাজ্যে ডিফল্ট
- অনুমোদন অমিল
- ইভেন্ট লগ করতে ব্যর্থ
- শোষণ সম্ভাবনা
সমাধান
- পরিচিত কোডের একটি বন্ধ সেটের বিরুদ্ধে সমস্ত প্রতিক্রিয়া যাচাই করুন।
- ডিফল্ট (এবং অজানা) অননুমোদিত বা ডিফল্টগুলি সরান ।
- বিশ্লেষণের জন্য প্রতিটি অমিল বা অপ্রত্যাশিত ক্ষেত্রে লগ করুন।
- প্রান্ত দৃশ্যকল্প সঙ্গে পরীক্ষা.
- পুরানো কোড এড়াতে নিয়মিতভাবে প্রসেসরের সাথে প্রতিক্রিয়া পুল সিঙ্ক্রোনাইজ করুন।
- নিরাপত্তার উপর ফোকাস করুন যাতে এটি একটি বাম প্রক্রিয়া পরিবর্তন করে।
- পরিবর্তনশীল পরিস্থিতি পরিচালনার জন্য পরিবর্তন স্থিতিস্থাপকতা সহ ডিজাইন সিস্টেম।
প্রসঙ্গ
আজ কম্পিউটার নিরাপত্তা দিবস এবং প্রত্যেক প্রোগ্রামারকে তার দায়িত্ব স্বীকার করতে হবে।
লেনদেন পরিচালনা করার জন্য ক্রেডিট কার্ড প্রসেসর থেকে প্রতিক্রিয়া পুলের উপর নির্ভর করে এমন একটি অ্যাপ্লিকেশন হ্যান্ডলিং বিক্রয় কল্পনা করুন।
প্রতিটি ক্রেডিট কার্ড প্রসেসর বিভিন্ন পরিস্থিতিতে পূর্বনির্ধারিত প্রতিক্রিয়া কোড প্রদান করে, যেমন অপর্যাপ্ত ব্যালেন্স বা মেয়াদোত্তীর্ণ কার্ড।
সমস্যাটি শুরু হয় যখন একটি প্রসেসর অস্বীকার করা লেনদেনের জন্য একটি নতুন প্রতিক্রিয়া কোড যোগ করে কিন্তু প্ল্যাটফর্মকে অবহিত করে না।
অ্যাপ্লিকেশানটি নতুন কোডটি চিনতে পারে না, এটিকে "পাওয়া যায় নি" হিসাবে বিবেচনা করে এবং ক্রয় অনুমোদন করে৷
ব্যবহারকারীরা এই ত্রুটিটি লক্ষ্য করে এবং অননুমোদিত কেনাকাটা করতে এটিকে কাজে লাগায়।
প্ল্যাটফর্মের আয় কমে গেছে, যার ফলে দেউলিয়া হয়ে গেছে।
নমুনা কোড
ভুল
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; default: // Authorize purchase break; }
ঠিক
String response = paymentProcessor.authorize(cardDetails); switch (response) { case "APPROVED": // Authorize purchase break; case "DECLINED_INSUFFICIENT_FUNDS": // Handle insufficient funds break; case "DECLINED_EXPIRED_CARD": // Handle expired card break; case "DECLINED_NEW_REASON": // Handle new declined reason break; default: // Reject purchase (default case for unknown responses) break; }
সনাক্তকরণ
- [x] ম্যানুয়াল
আপনি ত্রুটি-হ্যান্ডলিং যুক্তি পর্যালোচনা করে এই গন্ধ সনাক্ত করতে পারেন।
সিস্টেম লগ এবং অস্বীকৃত ক্ষেত্রে অস্বীকার করে কিনা পরীক্ষা করুন.
স্বয়ংক্রিয় পরীক্ষাগুলি নতুন বা অপ্রত্যাশিত ইনপুটগুলি বৈধ ক্রিয়াগুলিতে ডিফল্ট কিনা তা সনাক্ত করতে সহায়তা করতে পারে।
স্ট্যাটিক বিশ্লেষণ সরঞ্জাম সম্ভাব্য অসম্পূর্ণ ত্রুটি পরিচালনা পতাকাঙ্কিত করে সাহায্য করতে পারে।
ট্যাগ
- নিরাপত্তা
স্তর
- [x] মধ্যবর্তী
কেন বিজেকশন গুরুত্বপূর্ণ
পেমেন্ট প্রসেসরের প্রতিক্রিয়াগুলির আপনার অ্যাপ্লিকেশনের অভ্যন্তরীণ উপস্থাপনা এবং প্রসেসরের দ্বারা প্রত্যাবর্তিত প্রকৃত কোডগুলির মধ্যে এক-এক চিঠিপত্র বজায় রাখা গুরুত্বপূর্ণ।
আপনি যখন বিজেকশন ভাঙ্গবেন, আপনি একটি অমিল তৈরি করবেন।
অ্যাপ্লিকেশনটি অজানা কোডগুলিকে ভুলভাবে ব্যাখ্যা করে, যা অপ্রত্যাশিত আচরণ, নিরাপত্তা গর্ত এবং সম্ভাব্য বিপর্যয়কর ব্যবসায়িক পরিণতির দিকে পরিচালিত করে।
এআই জেনারেশন
আপনি যদি অজানা কেসগুলি কীভাবে পরিচালনা করবেন তা নির্দিষ্ট না করলে এআই সরঞ্জামগুলি এই গন্ধ তৈরি করতে পারে।
উদাহরণস্বরূপ, জেনেরিক ত্রুটি হ্যান্ডলিং ডিফল্ট হতে পারে সৌম্য ফলাফল যেমন "না পাওয়া" বা "সফলতা"।
এআই সনাক্তকরণ
এআই জেনারেটরগুলি এই গন্ধটি ঠিক করতে পারে যখন আপনি তাদের অজানা কেসগুলিকে অননুমোদিত হিসাবে বিবেচনা করার নির্দেশ দেন এবং লগিং এবং অপ্রত্যাশিত পরিস্থিতিতে পরীক্ষা করার উপর জোর দেন।
তাদের চেষ্টা করুন!
মনে রাখবেন: এআই সহকারীরা অনেক ভুল করে
সঠিক নির্দেশনা ছাড়া | নির্দিষ্ট নির্দেশাবলী সহ |
---|---|
উপসংহার
অজানা কেস সবসময় সতর্কতার সাথে পরিচালনা করুন।
ডিফল্ট যেমন "পাওয়া যায়নি" গুরুতর নিরাপত্তা সমস্যা এবং আর্থিক ক্ষতি হতে পারে.
লগিং এবং অজানা প্রতিক্রিয়া অস্বীকার করা আপনার উন্নয়ন অনুশীলনের অংশ করুন।
প্রোগ্রামিং করার সময় সিকিউরিটি সম্পর্কিত সিদ্ধান্ত বাম দিকে পরিবর্তন করুন।
সম্পর্ক
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxii
https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-viii-8mn3352
দাবিত্যাগ
কোড গন্ধ আমার মতামত .
ক্রেডিট
Unsplash- এ Nathana Rebouças- এর ছবি
https://www.youtube.com/watch?v=J2QOejhA6ek
অনুমান সব ব্যর্থতার জননী।
বললেন ওইসাল
সফটওয়্যার ইঞ্জিনিয়ারিং মহান উক্তি
এই নিবন্ধটি CodeSmell সিরিজের অংশ।