কোডটি সুরক্ষা ফাঁস হওয়ার বিষয়ে আপনার ধারণাটি আপনি যে ভাষাটি ব্যবহার করছেন তার উপর নির্ভর করে সত্য হতে পারে । সি কোডে এটি একটি সমস্যা হতে পারে (বিশেষত সিতে একটি বুলিয়ান কেবল একটি শূন্য বা শূন্য নয় এমন একটি শব্দ) - তবে বেশিরভাগ দৃ strongly়ভাবে টাইপ করা ভাষায় (যেমন রানটাইম টাইপ চেকিং) যদি passwordCheck
ভেরিয়েবলটি বুলিয়ান হিসাবে ঘোষণা করা হয়, এটিতে অন্য কিছু বরাদ্দ করার কোনও উপায় নেই। প্রকৃতপক্ষে, if
প্রিপিকেটের প্রতিটি জিনিসই বুলিয়ান সমাধান করতে হবে, আপনি বুলিয়ান অপারেটর ব্যবহার করুন বা কেবল মানটি ব্যবহার করুন। যদি আপনি passwordCheck
রানটাইমের সাথে আবদ্ধ অন্য ধরণের অবজেক্টটি পরিচালনা করতে সক্ষম হন তবে কিছু প্রকার অবৈধ কাস্ট ব্যতিক্রম ছুঁড়ে ফেলবেন।
যদি অন্যরকম কনস্ট্রাক্টগুলি নির্মাণ করা হয় তবে / যদি কনস্ট্রাক্টগুলি পড়ার চেয়ে পড়া সহজ হয় - এবং কেউ যদি নির্মাণটি উল্টানোর চেষ্টা করে তবে অমনোযোগী সমস্যার ঝুঁকি কম। এক সেকেন্ডের জন্য একই উদাহরণটি নেওয়া যাক:
if(passwordCheck == false) {
denyAccess();
}
if(passwordCheck) {
letThemIn();
}
আপনি উপরোক্ত কার্যকর করতে চান এমন পারস্পরিক একচেটিয়া ধারাগুলির অর্থ হারিয়ে গেছে। এটিই যদি অন্য / অন্যদের কাছে পৌঁছে দেয়। কার্যকর করার দুটি পারস্পরিক একচেটিয়া শাখা, যেখানে তাদের মধ্যে একটি সর্বদা চলবে। এটি সুরক্ষার একটি গুরুত্বপূর্ণ অঙ্গ - letThemIn
আপনি ফোন করার পরে কোনও উপায় নেই তা নিশ্চিত করে denyAccess
।
কোডের স্পষ্টতা এবং সমালোচনামূলক বিভাগগুলি সর্বাধিক সুরক্ষিত করার লক্ষ্যে, সেগুলি প্রাথমিক ধারা ( if
অংশ) এর মধ্যে থাকা উচিত। ডিফল্ট অ-আনুগত্যমূলক আচরণটি বিকল্প ধারার ( else
অংশ) মধ্যে হওয়া উচিত । উদাহরণ স্বরূপ:
if(passwordCheck) {
letThemIn();
} else {
denyAccess();
}
দ্রষ্টব্য: বিভিন্ন ভাষার সাথে কাজ করার জন্য, আমি একটি কোডিং হ্যাবিট তৈরি করেছি যা "যদি এটি স্ট্রিং হয় তবে" এর প্রশ্নটি এড়াতে সহায়তা করে? মূলত, এটি বুলিয়ান এক্সপ্রেশন মধ্যে ধ্রুবক প্রথম স্থাপন করা হয়। উদাহরণস্বরূপ, পরীক্ষা করার পরিবর্তেpasswordCheck == false
আমি খুঁজে দেখছি false == passwordCheck
। এটি সি ++ তে দুর্ঘটনাজনিত কার্যভার সমস্যাও এড়ানো যায়। এই পদ্ধতির ব্যবহার করে, আমি =
পরিবর্তে টাইপ করলে সংকলকটি অভিযোগ করবে ==
। জাভা এবং সি # এর মতো ভাষায়, সংকলক যদি বিধি হিসাবে অ্যাসাইনমেন্টটিকে একটি ত্রুটি হিসাবে বিবেচনা করে তবে সি ++ আনন্দের সাথে গ্রহণ করবে। এই কারণেই আমি null
প্রথমটির সাথে নাল চেক করার প্রবণতাও রাখি ।
আপনি যদি নিয়মিতভাবে ভাষা পরিবর্তন করেন তবে ধ্রুবকটিকে প্রথমে স্থাপন করা খুব সহায়ক। যাইহোক, আমার দলে এটি কোডিং স্ট্যান্ডার্ডের বিপরীতে এবং সংকলক যে কোনওভাবেই এই সমস্যাগুলি ধরে ches এটি ভাঙ্গা একটি হার্ড অভ্যাস হতে পারে।