সবচেয়ে ভাল চিন্তা চাকা পুনরায় উদ্ভাবন না করা হয়। তবে, আমি বুঝতে পেরেছি যে পিএইচপি ওয়ার্ল্ডে এমন একটি উচ্চ মানের উপাদান খুঁজে পাওয়া কঠিন হতে পারে যা ইতিমধ্যে এটি করে (এমনকি আমি নিশ্চিত যে ফ্রেমওয়ার্কগুলি এ জাতীয় জিনিস প্রয়োগ করে এবং তাদের বাস্তবায়ন ইতিমধ্যে পরীক্ষিত, কঠিন, কোড-পর্যালোচনা ইত্যাদি) etc. )
যদি, কিছু কারণে, আপনি একটি কাঠামো ব্যবহার করতে না পারেন, তবে এখানে কিছু পরামর্শ দেওয়া হল:
পারলে PBKDF2 বা Bcrypt ব্যবহার করুন । এটি তার জন্য সম্পন্ন হয়েছে।
যুক্তি: উভয় অ্যালগরিদমগুলি হ্যাশিং প্রক্রিয়াটিকে নির্বিচারে ধীর করে দিতে পারে, যা পাসওয়ার্ডগুলি হ্যাশ করার সময় আপনি ঠিক তেমন চান (দ্রুত বিকল্পগুলির অর্থ সহজ ব্রুট ফোর্স মানে)। আদর্শভাবে, আপনার প্যারামিটারগুলি সমন্বয় করা উচিত যাতে একই হার্ডওয়্যারে প্রক্রিয়াটি সময়ের সাথে ধীর এবং ধীর হয়ে যায়, যখন নতুন, দ্রুত হার্ডওয়্যার প্রকাশিত হয়।
আপনি যদি না পারেন তবে কমপক্ষে MD5 / SHA1 ব্যবহার করবেন না। কখনও। এটা কথা ভুলে যান । পরিবর্তে SHA512 ব্যবহার করুন, উদাহরণস্বরূপ। লবনও ব্যবহার করুন।
যুক্তি: MD5 এবং SHA1 খুব দ্রুত। আক্রমণকারীটির যদি হ্যাশগুলিযুক্ত আপনার ডেটাবেজে অ্যাক্সেস থাকে এবং এর একটি (এমনকি বিশেষ করে নয়) শক্তিশালী মেশিন থাকে, তবে একটি পাসওয়ার্ডকে জোর করে চাপিয়ে দেওয়া দ্রুত এবং সহজ। যদি কোনও লবণ না থাকে তবে আক্রমণকারী আসল পাসওয়ার্ডটি বাড়ার সম্ভাবনা রয়েছে (যা পাসওয়ার্ড অন্য কোথাও ব্যবহার করা হলে অতিরিক্ত ক্ষতি করতে পারে)।
পিএইচপি 5.5.0 ও পরে, ব্যবহার password_hash
এবং password_verify
।
যুক্তি: কাঠামোর দ্বারা সরবরাহিত কোনও ফাংশন কল করা সহজ, তাই ভুল করার ঝুঁকি হ্রাস পায়। এই দুটি ফাংশন সহ, আপনাকে বিভিন্ন পরামিতি যেমন হ্যাশ সম্পর্কে চিন্তা করতে হবে না। প্রথম ফাংশনটি একটি একক স্ট্রিং দেয় যা পরে ডাটাবেসে সংরক্ষণ করা যায়। দ্বিতীয় ফাংশনটি পাসওয়ার্ড যাচাইয়ের জন্য এই স্ট্রিংটি ব্যবহার করে।
হিংস্র শক্তি থেকে নিজেকে রক্ষা করুন । ব্যবহারকারী যদি ইতিমধ্যে 0.01 সেকেন্ড আগে অন্য একটি ভুল পাসওয়ার্ড জমা দিয়েছিল তবে যদি কোনও ভুল পাসওয়ার্ড জমা দেয় তবে এটি এটিকে ব্লক করা ভাল কারণ। যদিও মানুষ দ্রুত টাইপ করতে পারে, তারা সম্ভবত এত দ্রুত হতে পারে না ।
আর একটি সুরক্ষা হ'ল প্রতি ঘন্টা ব্যর্থতার সীমা সেট করা। যদি ব্যবহারকারী এক ঘন্টাে 3600 টি ভুল পাসওয়ার্ড, প্রতি সেকেন্ডে 1 টি পাসওয়ার্ড জমা দেয় তবে বিশ্বাস করা শক্ত যে এটি একটি বৈধ ব্যবহারকারী।
যুক্তিযুক্ত: আপনার পাসওয়ার্ডগুলি যদি কোনও সুরক্ষিত উপায়ে হ্যাশ করা হয় তবে ব্রুট ফোর্স খুব কার্যকর হতে পারে। যদি পাসওয়ার্ডগুলি সুরক্ষিতভাবে সংরক্ষণ করা হয় তবে ব্রুটি ফোর্সটি এখনও আপনার সার্ভারের সংস্থান এবং নেটওয়ার্ক ব্যান্ডউইদথকে নষ্ট করছে, বৈধ ব্যবহারকারীদের জন্য নিম্ন কার্যকারিতা তৈরি করবে। ব্রুট ফোর্স সনাক্তকরণ বিকাশ করা এবং সঠিক হওয়া সহজ নয়, তবে যে কোনও ছোট্ট সিস্টেমের জন্য এটি সম্পূর্ণ মূল্যবান।
আপনার ব্যবহারকারীদের প্রতি চার সপ্তাহে তাদের পাসওয়ার্ড পরিবর্তন করতে বলবেন না। এটি অত্যন্ত বিরক্তিকর এবং সুরক্ষা হ্রাস করে , কারণ এটি পরবর্তী-ভিত্তিক সুরক্ষাকে উত্সাহ দেয়।
যুক্তিযুক্ত: ধারণাটি যে প্রতি এন সপ্তাহে পাসওয়ার্ডগুলি পরিবর্তন করতে জোর করা সিস্টেমটিকে নৃশংস শক্তি থেকে রক্ষা করে wrong ব্রুট ফোর্স আক্রমণ সাধারণত সেকেন্ড, মিনিট, ঘন্টা বা দিনের মধ্যে সফল হয়, যা মাসিক পাসওয়ার্ড পরিবর্তনকে অপ্রাসঙ্গিক করে তোলে। অন্যদিকে, ব্যবহারকারীর পাসওয়ার্ড মনে রাখা খারাপ। এছাড়াও, যদি তাদের এগুলি পরিবর্তন করতে হয় তবে তারা হয় খুব সাধারণ পাসওয়ার্ড ব্যবহার করার চেষ্টা করবে বা পোস্ট-এর পরে তাদের পাসওয়ার্ডগুলি নোট করবে।
প্রতিটি সময় নিরীক্ষণ। লগন সংরক্ষণ করুন, তবে নিরীক্ষণ লগে কখনও পাসওয়ার্ড সংরক্ষণ করবেন না। অডিট লগটি সংশোধন করা যাবে না তা নিশ্চিত করুন (যেমন আপনি শেষে ডেটা যোগ করতে পারেন, তবে বিদ্যমান ডেটাটি পরিবর্তন করতে পারবেন না)। নিশ্চিত করুন যে নিরীক্ষণ লগগুলি নিয়মিত ব্যাকআপের সাপেক্ষে। আদর্শভাবে, লগগুলি খুব নিরোধক অ্যাক্সেসের সাথে একটি উত্সর্গীকৃত সার্ভারে সংরক্ষণ করা উচিত: অন্য কোনও সার্ভার হ্যাক করা থাকলে আক্রমণকারী তার উপস্থিতি (এবং আক্রমণের সময় নেওয়া পথ) গোপন করতে লগগুলি মুছতে সক্ষম হবে না।
কুকিগুলিতে ব্যবহারকারীর শংসাপত্রগুলি মনে রাখবেন না, যদি না ব্যবহারকারী এটি করতে বলে ("আমাকে মনে রাখুন" চেক বাক্সটি মানুষের ত্রুটি এড়াতে অবশ্যই ডিফল্টরূপে চেক করা উচিত)।